Я вручную внедряю 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
после навигации.