Jor*_*uel 2 e2e-testing cypress
当域不同时,如何将变量从一个测试(它)共享到另一个测试?\n我尝试了无数种方法,使用别名、闭包、环境变量、本地存储,甚至使用事件侦听器,但是当下一个测试是执行后,这些变量将从内存中清除。
\n重点是我需要在Web应用程序中获取开放协议的ID,然后去另一个域的后台验证该协议是否真的开放。\n这是放弃后的最后一个版本...
\n/// <reference types="cypress" />\n\ndescribe("Testar abertura de protocolo no fale conosco", () => {\n it("Deve acessar o FaleConosco, abrir um protocolo e depois validar no backoffice a abertura correta do mesmo", () => {\n cy.visit(`${Cypress.env('FALE_CONOSCO_URL')}`)\n cy.get("#BotaoCriarNovoChamado").click()\n \n cy.get('#InputLabelCpfCnpj').type("99999999999")\n cy.get('#InputLabelEmail').type("email@email.com")\n cy.get('#InputLabelTelefone').type("99999999999")\n cy.get('#InputLabelAssunto').type("Assunto de teste")\n cy.get('#InputLabelDescricao').type("Essa aqui e uma descri\xc3\xa7\xc3\xa3o bem detalhada, confia")\n cy.get('#BotaoEnviar').click()\n\n cy.get('#spanNumeroDoChamado').should('contain', 'N\xc3\xbamero do chamado')\n cy.get('#divNumeroDoChamado').then($div => {\n const numero_do_chamado = $div.text().split(' ')[3].replace(/^#/, "");\n // cy.wrap(numero_do_chamado).as("minhaVariavel");\n\n // Enviar o valor do alias para o segundo dom\xc3\xadnio usando postMessage\n cy.window().then((win) => {\n win.postMessage({ type: "aliasValue", value: numero_do_chamado }, "*");\n });\n // Cypress.env('numero_do_chamado', numero_do_chamado);\n // cy.log("numero_do_chamado - " + Cypress.env('numero_do_chamado'));\n // cy.window().then(win => {\n // win.localStorage.setItem('numero_do_chamado', numero_do_chamado);\n // });\n });\n\n\n // cy.get('#divNumeroDoChamado').invoke("text").as("minhaVariavel")\n // // ($div => {\n // // const numero_do_chamado = $div.text().split(' ')[3].replace(/^#/, "");\n // // cy.wrap(numero_do_chamado).as("minhaVariavel");\n\n // // Enviar o valor do alias para o segundo dom\xc3\xadnio usando postMessage\n // cy.window().then((win) => {\n // win.postMessage({ type: "aliasValue", value: cy.get("@minhaVariavel") }, "*");\n // });\n // // // Cypress.env('numero_do_chamado', numero_do_chamado);\n // // // cy.log("numero_do_chamado - " + Cypress.env('numero_do_chamado'));\n // // // cy.window().then(win => {\n // // // win.localStorage.setItem('numero_do_chamado', numero_do_chamado);\n // // // });\n // // });\n\n });\n\n it("Deve acessar o Conecta e validar a abertura correta protocolo", () => {\n cy.visit(`${Cypress.env('URL')}`);\n\n // Receber a mensagem contendo o valor do alias enviado pelo primeiro dom\xc3\xadnio\n cy.window().then((win) => {\n win.addEventListener("message", (event) => {\n const message = event.data;\n\n // Verificar se a mensagem cont\xc3\xa9m o valor do alias\n if (message.type === "aliasValue") {\n const aliasValue = message.value;\n cy.wrap(aliasValue).as("meuAliasCompartilhado");\n }\n });\n });\n\n // Fazer algo com o alias compartilhado no segundo dom\xc3\xadnio\n cy.get("@meuAliasCompartilhado").then((valor) => {\n // Fa\xc3\xa7a algo com o valor do alias compartilhado\n cy.log("Valor do alias compartilhado:", valor);\n cy.login();\n cy.visit(`${Cypress.env('URL')}/ticket-container/${Cypress.env('valor')}`)\n\n });\n\n });\n\n})\nRun Code Online (Sandbox Code Playgroud)\n
当测试运行程序更改域时,整个浏览器对象将被重置,因此写入浏览器内存的所有变量都会丢失
这样您就可以使用固定装置(磁盘存储)或与任务相关的伪数据存储(请参阅bahmutov/cypress-data-session)。
对于固定装置,代码是
it("Deve acessar o FaleConosco...", () => {
cy.visit(`${Cypress.env('FALE_CONOSCO_URL')}`)
...
const numero_do_chamado = $div.text().split(' ')[3].replace(/^#/, "")
cy.writeFile('cypress/fixtures/numero_do_chamado.json', numero_do_chamado)
...
})
it("Deve acessar o Conecta...", () => {
cy.visit(`${Cypress.env('URL')}`)
...
const numero_do_chamado = cy.readFile('cypress/fixtures/numero_do_chamado.json')
...
})
Run Code Online (Sandbox Code Playgroud)
不要使用cy.fixture()命令,因为内部涉及缓存。对于您当前的情况来说不是问题,但当您的测试模式更改时可能会导致意外错误。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |