Как мой код приложения может узнать, тестируется ли приложение с помощью testcafe? - PullRequest
2 голосов
/ 30 марта 2019

У меня есть набор тестов, запущенных с TestCafe.В одном компоненте мне нужно знать, выставлять ли некоторые данные в окно на основе того, запущено ли приложение в testcafe или нет, то есть

if (window.Testcafe === true) {
    window.property = data;
}

Это возможно с Cypress, другой тестовой средой, которая предоставляетwindow.Cypress.Я попытался установить свойство для окна из testcafe tests / fixtures, используя код с эффектом

test('Test 1', async t => {
    await t.eval(() => {window.Testcafe = true});
    const val = await t.eval(() => window.Testcafe);
    // val === true
})
// In component window.Testcafe is false

Я открыт для других подходов (кроме свойств окна).Кто-нибудь еще делал что-то подобное?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2019

TestCafe добавляет некоторые свойства к объекту window, которые могут помочь вам определить, работает ли ваш сайт с TestCafe. Например, вы можете проверить свойство window['%hammerhead%']. Если он существует, значит, TestCafe работает.

Однако я должен отметить, что это не публичный API. Вряд ли это изменится в будущем, но это еще не 100% твердый раствор.

Не могли бы вы описать ваш сценарий подробно? Если многие пользователи сочтут это полезным, мы можем рассмотреть возможность реализации этой функции в будущем.

Кроме того, я хочу упомянуть, что вы можете создавать запросы функций в репозитории TestCafe, используя следующую форму

2 голосов
/ 30 марта 2019

Компонент уже загружен при запуске теста.

Таким образом, установка переменной TestCafe внутри теста слишком поздняя.

Один из обходных путей для тестирования хостинга TestCafe:

if ( window.localStorage.nativeStorageKey && window.localStorage.nativeStorageKey.startsWith('hammerhead')) {
    window.property = data;
}
...