Я исследую TestCafe для использования в качестве моей инфраструктуры автоматизации тестирования, и я столкнулся с небольшим камнем преткновения в отношении выполнения функции с использованием приложения Rendr на моем AUT.С Cypress.io, Protractor, Puppeteer и т. Д. Я могу выполнить одну и ту же команду ... поэтому я не совсем уверен, где я ошибаюсь с TestCafe.
По сути то, что я пытаюсьВыполнить это: window.App.get('currentUser').set('login_state', 'someLoginState');
Кипарис
cy.window().then((win) => {
win.App.get('currentUser').set('login_state', 'someState');
});
Транспортир
function changeUserState() {
App.get('currentUser').set('login_state', 'someState');
}
browser.executeScript(changeUserState);
Кукольник
function changeUserState() {
window.App.get('currentUser').set('login_state', 'someState');
}
await page.evaluate(changeUserState);
Для TestCafe я пытался использовать:
const changeUserState = ClientFunction((desiredState) => {
return App.get('currentUser').set('login_state', desiredState);
});
fixture `User states`
.page(url)
.afterEach( async t => {
await t
logout();
});
test('Change a users log in state', async t => {
await loginForm.loginViaUrl(userEmail, userPassword);
await changeUserState('SomeState');
await checkUserState('SomeState'); // Just an example of what I would do next
}
При запуске это выдает ошибку ReferenceError: App is not defined
.
(Я также попытался использовать вышеуказанные опции, используя 'window.App.get ...': TypeError: Cannot read property 'get' of undefined
- Добавление ожидания перед вызовом ClientFunction не влияет на результат)
ОБНОВЛЕНИЕ Исходя из комментариев, опция t.eval(...)
не должна использоваться, поскольку я получаю доступ к функциональности на стороне клиента.