TestCafe: веб-страница не может перейти на домашнюю страницу, на которой зарегистрирован пользователь, в среде docker - PullRequest
0 голосов
/ 16 января 2020

Я вручную внедряю auth cook ie в браузер и пытаюсь держать моего пользователя в системе. Я успешно могу сделать это в своей локальной среде (не в среде docker). Когда я запускаю тот же тестовый дизайн в среде docker, навигация к домашней странице входа в систему завершается неудачно по неизвестным причинам.

Вот код:

import * as utils from '../../resources/utils';

require('dotenv').config();
const token = process.env.authToken;

fixture`account-test`
  .page(inputData.url)
  .beforeEach(async () => {
    const nextMonth = new Date();
    nextMonth.setMonth(nextMonth.getMonth() + 1);
    console.log(`token value: ${token}`);
    await t.navigateTo(inputData.url).then(await utils.setCookie('AUTH_COOKIE_ID', token, nextMonth));
    console.log('navigation done');
  });

test('Add a new account', async (t) => {
  console.log(await utils.getCookie('AUTH_COOKIE_ID'));
  const accountName = helper.getString();
  console.log(await utils.getCookie('AUTH_COOKIE_ID'));
  await t
    .click(accountManager.addNewAccountButton)

Здесь используется команда для запуска тестов:

docker run --net=host -v `pwd`:/tests -v `pwd`/reporter:/reporters -w /reporters -e userEmail=admin@test.com -e userPass=password -e urlPort=9000 --env-file .env testcafe 'chromium --no-sandbox' '/tests/uitests/**/concurrentTests/accounttest.js' -t 'Add a new account' --disable-page-caching -s takeOnFails=true --reporter 'html:result.html',spec,'xunit:res.xml

Вот вывод:

Running tests in:
 - Chrome 77.0.3865 / Linux 0.0.0

 account-test
token value: 'eyJhbGciOiJSxxxxxxxxxxxNWvTroW0XhR69ZSwGu6PhXnVGOI27h0'
navigation done
'eyJhbGciOiJSxxxxxxxxxxxNWvTroW0XhR69ZSwGu6PhXnVGOI27h0'
'eyJhbGciOiJSxxxxxxxxxxxNWvTroW0XhR69ZSwGu6PhXnVGOI27h0'
     ✖ Add a new account (screenshots:
 /reporters/screenshots/2020-01-16_18-50-54/test-1/Chrome_77.0.3865_Linux_0.0.0/errors/1.png)

   1) The specified selector does not match any element in the DOM tree.

       > | Selector('button[aria-label="Add a New Account"]')

      Browser: Chrome 77.0.3865 / Linux 0.0.0
      Screenshot:

   /reporters/screenshots/2020-01-16_18-50-54/test-1/Chrome_77.0.3865_Linux_0.0.0/errors/1.png

         52 |  const accountName = helper.getString();
         53 |  console.log(await utils.getCookie('RP_AUTH_COOKIE_ID'));
         54 |  await t
       > 55 |    .click(accountManager.addNewAccountButton)
         56 |    .typeText(accountManager.accountName, accountName)

         at <anonymous>
      (/tests/uitests/tests/concurrentTests/accounttest.js:55:6)

--env-file .env это в основном получение токена аутентификации.

До теста и когда в тесте я мог видеть, что был напечатан правильный AuthToken, но я не понимаю даже с правильным токеном аутентификации, почему он не может перейти на страницу входа. Точно такой же сценарий в локальной среде (без TestCafe docker) работает отлично. Когда я не использую флаг --disable-page-caching, токен аутентификации возвращает null после навигации.

...