Как сделать базовый межстраничный тест? Пример входа

Итак, я тестирую свою страницу входа с этим фрагментом кода

describe('Testing the login page', function (t) {
    t.it('Should be possible to login', function (t) {
        t.chain(
            {
                waitForCQ : '>> textfield[itemId=login]'
            },
            {
                action  : 'type',
                target  : '>> textfield[itemId=login]',
                text    : 'accountname'
             },
            {
                action  : 'type',
                target  : '>> textfield[itemId=password]',
                text    : 'passwd[ENTER]'
             }
        )
    })
});

с этим harness.start() conf:

harness.start(
  '010_sanity.t.js',
  {
    group   : 'Login/Logout',
    items   : [
      {
        enablePageRedirect : true,
        pageUrl : "https://mywebsite.com/Login",
        url     : "020_login.t.js"
      },
      {
        enablePageRedirect : true,
        pageUrl : "https://mywebsite.com/",
        url     : "021_logout.t.js"
      }
    ]
  },
  ...
);

И я столкнулся с проблемой. Даже если для параметра enablePageRedirect задано значение true, тесты, похоже, не сохраняются с первой страницы до следующей. Напротив, в области регистрации интерфейса тестирования сиесты (в середине) я вижу, что тест перезапускается с нуля, когда страница изменилась. С бесконечной спиннером.

Как сделать такой простой межстраничный тест с сиестой? Документ мне не очень помог: http://www.bryntum.com/docs/siesta/

заранее спасибо

1 ответ

Решение

Каждый тест должен начинаться с новой страницы и быть автономным, поэтому каждый из ваших тестов должен начинаться с нового входа в приложение. Включение перенаправления страниц просто означает, что после входа в систему приложение может продолжить тестирование после перехода на следующую страницу. Вот пример того, как мы пишем это в наших тестах:

  test.chain(
    // Enter username
    {
      action: 'type',
      target: '#user_id',
      text: 'ACCOUNTNAMEHERE'
    },
    // Enter password
    {
      action: 'type',
      target: '#password',
      text: 'PASSWORDHERE'
    },
    // Set up detection of the page changing.
    // The trigger specifies what action will cause the
    // page to change. The timeout is the maximum length
    // to wait for the navigation to occur.
    {
      waitFor: 'PageLoad',
      timeout: 20000,
      trigger: {
        click: 'input[type=submit]'
      }
    }
  );
Другие вопросы по тегам