我正在尝试使用固定装置来保存不同测试的数据,特别是用户凭据。这是代码的示例。当进行第二次测试时,我得到了'Cannot read properties of undefined (reading 'data')'。
有什么想法以及如何解决这个问题吗?这是错误的吗?
before(function () {
cy.fixture('credentials').then(function (data) {
this.data = data;
})
})
it('Login correct', () => {
cy.visit('/')
loginPage.signIn(this.data.admin.username,this.data.admin.password)
cy.wait(5000)
// assertion
cy.contains('Dashboard').should('be.visible')
})
Run Code Online (Sandbox Code Playgroud)
这是我的credentials.json文件:
{
"admin": {
"username": "*****",
"password": "*****"
}
}
Run Code Online (Sandbox Code Playgroud) 我对我的服务器进行了调用(是对 ibm watson 的调用)进行一些操作,如果一切正常,则返回 200 响应。
这个调用的时间超过 5000ms,cypress 可以等待。我需要等到服务器返回响应,然后我知道我的反应应用程序中会出现一个弹出窗口。
这是我从后端对 Watson 的调用:
const launchWatsonTest = (watsonData) => {
const data = {
withCredentials: true,
mode: 'cors',
headers: {
'x-access-token': watsonData.token,
},
params: {
topicId: watsonData.corpusNameId,
workspaceId: watsonData.corpusArea
}
};
return clienteAxios.post(`test-watson`, watsonData, data);
};
Run Code Online (Sandbox Code Playgroud)
我该如何等待才能继续测试?
我对 cypress 进行了这个测试:
describe("E2E CognitiveTool", function() {
it("should crear respuesta simple sin problemas", function() {
cy.visit("http://localhost:3000");
cy.contains('[data-cy="topicName"]', 'CA2');
cy.get('[data-cy="accederResponsesCA2"]').click();
cy.get('[data-cy="crearResponse"]').should('exist')
.click();
cy.get('input[name="description"]')
.type('Simple Cypres Response');
cy.get('[name="typeResponse"]').first().check({force:true});
cy.get('[name="lateral_W"]').first().check({force:true});
cy.get('[name="rolViews"]').first().check({force:true});
cy.get('[name="workLoadLevel"]').first().check({force:true});
cy.get('[data-cy="continuar"]').click();
cy.get('input[id=0]')
.type('hola');
cy.get('input[id=1]')
.type('adios');
cy.get('input[id=2]') …Run Code Online (Sandbox Code Playgroud) 这是我的问题:我有一个大表单,我想在其中执行 e2e 测试。当用户更改其字段中的值时,此表单会填充 URL 查询参数。
当我使用 Cypress 来检查它时,每次在表单中输入内容时,它都会生成大量日志(例如(新 URL)见下文),使得测试难以阅读。
http://localhost:3000/demande-immersion?email=&firstName=Archib&lastName=&phone=&financiaryHelp=&emergencyContact=&emergencyContactPhone=&birthdate=&agencyDepartment=86&siret=&businessName=&businessAdvantages=&etFirstName=&etLastName=&etJob=&etPhone=&etEmail=&erFirstName=&erLastName=&erPhone=&erEmail=&immersionAddress=&agencyId=1411b4b7-a7a8-4d69-92ac-1eca1ac75c50&immersionActivities=&immersionSkills=&sanitaryPreventionDescription=&workConditions=&dateStart=2023-04-27&dateEnd=2023-04-28&schedule=%7B%22totalHours%22%3A14%2C%22workedDays%22%3A2%2C%22isSimple%22%3Atrue%2C%22selectedIndex%22%3A0%2C%22complexSchedule%22%3A%5B%7B%22date%22%3A%222023-04-27T00%3A00%3A00.000Z%22%2C%22timePeriods%22%3A%5B%7B%22start%22%3A%2208%3A00%22%2C%22end%22%3A%2212%3A00%22%7D%2C%7B%22start%22%3A%2213%3A00%22%2C%22end%22%3A%2216%3A00%22%7D%5D%7D%2C%7B%22date%22%3A%222023-04-28T00%3A00%3A00.000Z%22%2C%22timePeriods%22%3A%5B%7B%22start%22%3A%2208%3A00%22%2C%22end%22%3A%2212%3A00%22%7D%2C%7B%22start%22%3A%2213%3A00%22%2C%22end%22%3A%2216%3A00%22%7D%5D%7D%5D%7D
Run Code Online (Sandbox Code Playgroud)
有没有办法过滤 Cypress 登录应用程序的事件(使用cypress open)?
我必须使用 Cypress 验证网页上不同元素上的特殊字符串。
\n特殊字符串是:T!@$^()-_+, &_-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi
每当我尝试验证字符串时,我都会在 Cypress 中收到以下断言错误:
\nAssertionError Timed out retrying after 4000ms: Expected to find content: \'T!@$^()-+, &-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi\' within the element: <label> but never did.
下面是代码块:
\n cy.visit(\'public/special-character.html\')\n \n cy.get(\'label\').contains(\'T!@$^()-_+, &_-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi\');\n cy.get(\'p\').contains(\'T!@$^()-_+, &_-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi\');\n \n })\nRun Code Online (Sandbox Code Playgroud)\n还附上了一个示例 HTML 页面:
\n cy.visit(\'public/special-character.html\')\n \n cy.get(\'label\').contains(\'T!@$^()-_+, &_-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi\');\n cy.get(\'p\').contains(\'T!@$^()-_+, &_-=tt.\xc3\x98 {y}[a] \xc2\xa3 fi\');\n \n })\nRun Code Online (Sandbox Code Playgroud)\r\n我想使用https://www.npmjs.com/package/chalk作为控制台日志。
现在如果我使用console.log它就可以了
console.log(chalk.blue("Hello World"))
但是当我用 cy.task 运行它时,它不会给出任何错误,但不会显示任何着色
cy.task('log', chalk.blue("Hello World"));它打印 Hello World 但不是蓝色
我究竟做错了什么?