From b79c2ffae62b43315425cb431f96a8c8042d605c Mon Sep 17 00:00:00 2001 From: AndressaKarla Date: Fri, 22 Mar 2024 20:42:00 -0300 Subject: [PATCH] =?UTF-8?q?Realizando=20e=20adaptando=20boa=20parte=20das?= =?UTF-8?q?=20refatora=C3=A7=C3=B5es=20sugeridas=20no=20PR=201=20-=20Refac?= =?UTF-8?q?tor=20the=20whole=20thing=20da=20live=20Talking=20About=20Testi?= =?UTF-8?q?ng=2011.02.2023?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...matizados-e2e-front-serve-rest-cypress.yml | 7 +++- .gitignore | 8 +++- cypress.config.js | 11 +++-- cypress/e2e/login-entrar.cy.js | 40 ++++++++----------- cypress/fixtures/login.example.json | 14 +++++++ cypress/fixtures/login.json | 14 ------- cypress/support/commands.js | 18 ++++----- cypress/support/environments/dev.json | 2 +- cypress/support/environments/local.json | 2 +- package.json | 5 ++- 10 files changed, 61 insertions(+), 60 deletions(-) create mode 100644 cypress/fixtures/login.example.json delete mode 100644 cypress/fixtures/login.json diff --git a/.github/workflows/workflow-testes-automatizados-e2e-front-serve-rest-cypress.yml b/.github/workflows/workflow-testes-automatizados-e2e-front-serve-rest-cypress.yml index 85d3c79..277544e 100644 --- a/.github/workflows/workflow-testes-automatizados-e2e-front-serve-rest-cypress.yml +++ b/.github/workflows/workflow-testes-automatizados-e2e-front-serve-rest-cypress.yml @@ -30,8 +30,12 @@ jobs: steps: - name: Passo 1 - Obter cópia do código-fonte do repositório uses: actions/checkout@v3.3.0 + + - name: Passo 2 - Redirecionar o conteúdo de "secrets.LOGIN_ENV" para o arquivo "login.json" + run: | + echo '${{ secrets.LOGIN_ENV }}' > ./cypress/fixtures/login.json - - name: Passo 2 - Instalar dependências, Executar testes em modo headless (2º plano) em um ambiente de desenvolvimento e Gerar os resultados dos testes + - name: Passo 3 - Instalar dependências, Executar testes em modo headless (2º plano) em um ambiente de desenvolvimento e Gerar os resultados dos testes uses: cypress-io/github-action@v5.0.8 with: # forçar, mesmo tendo possíveis conflitos, a instalação das dependências do projeto do arquivo "package.json" @@ -56,5 +60,4 @@ jobs: with: name: cypress-screenshots-chrome path: ./cypress/screenshots - # armazena por 30 dias retention-days: 30 diff --git a/.gitignore b/.gitignore index 51eba95..9f27980 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ -node_modules +cypress/downloads +cypress/fixtures/*.json +!cypress/fixtures/*.example.json cypress/videos -cypress/screenshots \ No newline at end of file +cypress/screenshots +node_modules +.DS_Store \ No newline at end of file diff --git a/cypress.config.js b/cypress.config.js index fd80395..bb3d6a7 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -1,17 +1,16 @@ const { defineConfig } = require('cypress') module.exports = defineConfig({ + viewportWidth: 1280, + viewportHeight: 720, + e2e: { - viewportWidth: 1280, - viewportHeight: 720, - setupNodeEvents(on, config) { - // implement node event listeners here const environment = config.env.environment || 'dev' config.env = require(`./cypress/support/environments/${environment}.json`) - config.baseUrl = config.env.urlDefault + config.baseUrl = config.env.baseUrl return config }, }, -}); +}) diff --git a/cypress/e2e/login-entrar.cy.js b/cypress/e2e/login-entrar.cy.js index 6dc2c62..ec12699 100644 --- a/cypress/e2e/login-entrar.cy.js +++ b/cypress/e2e/login-entrar.cy.js @@ -1,7 +1,7 @@ /// import seletores from '../support/seletores' -/* login-entrar.cy.js +/* Funcionalidade: Tela Login - Botão Entrar Como usuário da Tela Login do front do ServeRest Quero clicar no Botão Entrar @@ -9,22 +9,22 @@ import seletores from '../support/seletores' */ describe('Funcionalidade: Tela Login - Botão Entrar', () => { - context('Cenário: Validar Login usuário administrador', () => { - context('Dado que eu acesse a tela de Login do front do ServeRest', () => { - before(() => { - cy.visit('/login') - }) + context('Dado que eu acesse a tela de Login do front do ServeRest', () => { + beforeEach(() => { + cy.visit('/login') + }) + context('Cenário: Validar Login usuário administrador', () => { context('Quando eu informar os campos de email e senha de um usuário administrador', () => { beforeEach(() => { cy.fixture('login').then((loginFixture) => { - cy.realizarLoginEntrar(loginFixture.adminValido1.emailValido1, loginFixture.adminValido1.senhaValida1) + cy.realizarLoginBotaoEntrar(loginFixture.adminValido.emailValido, loginFixture.adminValido.senhaValida) }) }) it('Então deverá apresentar a tela Home com o texto Bem Vindo e com o texto Este é seu sistema para administrar seu ecommerce', () => { cy.url().should('include', `${Cypress.config('baseUrl')}/admin/home`) - + cy.get(seletores.HOME.TEXTO_BEM_VINDO) .should('be.visible') .should('contain', 'Bem Vindo') @@ -35,25 +35,19 @@ describe('Funcionalidade: Tela Login - Botão Entrar', () => { }) }) }) - }) - - context('Esquema do Cenário: Validar Login usuários inválidos', () => { - context('Dado que eu acesse a tela de Login do front do ServeRest', () => { - beforeEach(() => { - cy.visit('/login') - }) - context('Quando eu informar os campos de email e senha incorretamente', () => { - const exemplos = [ - { email: 'emailInvalidoVazio1', senha: 'senhaInvalidaVazia1', mensagem: '×Email é obrigatório×Password é obrigatório' }, - { email: 'emailInvalidoDominioSemPonto1', senha: 'senhaValida2', mensagem: 'Email deve ser um email válido' }, - { email: 'emailInvalidoNaoCadastrado1', senha: 'senhaInvalidaNaoCadastrada1', mensagem: 'Email e/ou senha inválidos' }, - ] + context('Esquema do Cenário: Validar Login usuários inválidos', () => { + const exemplos = [ + { email: 'emailInvalidoVazio', senha: 'senhaInvalidaVazia', mensagem: '×Email é obrigatório×Password é obrigatório' }, + { email: 'emailInvalidoDominioSemPonto', senha: 'senhaValida', mensagem: 'Email deve ser um email válido' }, + { email: 'emailInvalidoNaoCadastrado', senha: 'senhaInvalidaNaoCadastrada', mensagem: 'Email e/ou senha inválidos' }, + ] - exemplos.forEach((ex) => { + exemplos.forEach((ex) => { + context(`Quando eu informar os campos de email e senha incorretamente ${ex.email} e ${ex.senha}`, () => { it(`Então na tela Login deverá apresentar a mensagem ${ex.mensagem}`, () => { cy.fixture('login').then((loginFixture) => { - cy.realizarLoginEntrar(loginFixture.invalido1[ex.email], loginFixture.invalido1[ex.senha]) + cy.realizarLoginBotaoEntrar(loginFixture.invalido[ex.email], loginFixture.invalido[ex.senha]) }) cy.get(seletores.LOGIN.FORM_LOGIN) diff --git a/cypress/fixtures/login.example.json b/cypress/fixtures/login.example.json new file mode 100644 index 0000000..8ef20ad --- /dev/null +++ b/cypress/fixtures/login.example.json @@ -0,0 +1,14 @@ +{ + "adminValido": { + "emailValido": "informar-email-usuario-admin-valido@dominio.com", + "senhaValida": "informar-senha-usuario-admin-valido" + }, + "invalido": { + "emailInvalidoVazio": "deixar-apenas-as-aspas-duplas", + "senhaInvalidaVazia": "deixar-apenas-as-aspas-duplas", + "emailInvalidoDominioSemPonto": "informar-email-usuario-invalido-dominio-sem-ponto@dominio", + "senhaValida": "informar-senha-usuario-valido", + "emailInvalidoNaoCadastrado": "informar-email-usuario-invalido-nao-cadastrado@dominio.com", + "senhaInvalidaNaoCadastrada": "informar-senha-usuario-invalido-nao-cadastrada" + } +} \ No newline at end of file diff --git a/cypress/fixtures/login.json b/cypress/fixtures/login.json deleted file mode 100644 index 2331352..0000000 --- a/cypress/fixtures/login.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "adminValido1": { - "emailValido1": "fulano@qa.com", - "senhaValida1": "teste" - }, - "invalido1": { - "emailInvalidoVazio1": "", - "senhaInvalidaVazia1": "", - "emailInvalidoDominioSemPonto1": "usuario4@outlook", - "senhaValida2": "teste2", - "emailInvalidoNaoCadastrado1": "usuario5@gmail.com", - "senhaInvalidaNaoCadastrada1": "teste3" - } -} \ No newline at end of file diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 53e7105..86473a9 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -27,26 +27,26 @@ import seletores from './seletores' // -- This will overwrite an existing command -- // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) -Cypress.Commands.add('realizarLoginEntrar', (email = '', senha = '') => { +Cypress.Commands.add('realizarLoginBotaoEntrar', (email = '', senha = '') => { cy.get(seletores.LOGIN.CAMPO_EMAIL).as('campoEmail') cy.get(seletores.LOGIN.CAMPO_SENHA).as('campoSenha') cy.get(seletores.LOGIN.BOTAO_ENTRAR).as('botaoEntrar') if (email !== '') { cy.get('@campoEmail') - .should('be.visible') - .click() - .type(email) + .should('be.visible') + .click() + .type(email) } if (senha !== '') { cy.get('@campoSenha') - .should('be.visible') - .click() - .type(senha, { log: false }) + .should('be.visible') + .click() + .type(senha, { log: false }) } cy.get('@botaoEntrar') - .should('be.visible') - .click() + .should('be.visible') + .click() }) \ No newline at end of file diff --git a/cypress/support/environments/dev.json b/cypress/support/environments/dev.json index 2a812e2..86b07c7 100644 --- a/cypress/support/environments/dev.json +++ b/cypress/support/environments/dev.json @@ -1,4 +1,4 @@ { - "urlDefault": "https://front.serverest.dev", + "baseUrl": "https://front.serverest.dev", "baseUri": "https://serverest.dev" } \ No newline at end of file diff --git a/cypress/support/environments/local.json b/cypress/support/environments/local.json index bc37dc3..55ff1bb 100644 --- a/cypress/support/environments/local.json +++ b/cypress/support/environments/local.json @@ -1,4 +1,4 @@ { - "urlDefault": "http://localhost:3001", + "baseUrl": "http://localhost:3001", "baseUri": "https://serverest.dev" } \ No newline at end of file diff --git a/package.json b/package.json index e29594a..77f1ed3 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,10 @@ "name": "testes-automatizados-e2e-front-serve-rest_cypress", "version": "1.0.0", "description": "Projeto de Testes Automatizados E2E no front e API REST do ServeRest em Cypress", - "main": "index.js", + "main": "cypress.config.js", "scripts": { - "test": "npx cypress open" + "cy:open": "cypress open", + "test": "cypress run --browser chrome" }, "author": "Andressa Karla", "license": "ISC",