我正在研究将 TestCafe 用作我的测试自动化框架,并且在使用我的 AUT 上的 Rendr 应用程序执行功能方面遇到了一些障碍。使用 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 之前添加等待不会影响 oucome)
更新
根据评论,t.eval(...)
当我访问客户端功能时,不应使用该选项。