Repositório utilizado durante o curso Testes de aplicações modernas com Cypress.
- cypress
- xpath
- page objects
- teste funcional
- API
- teste de interface
> git init
> npm init -y
> npm install -D cypress
> npm install -D cypress-xpath
Uma expressão arrow function possui uma sintaxe mais curta quando comparada a uma expressão de função (function expression) e não tem seu próprio this, arguments, super ou new.target. Estas expressões de funções são melhor aplicadas para funções que não sejam métodos, e elas não podem ser usadas como construtoras (constructors).
Uma Promise é um objeto que representa a eventual conclusão ou falha de uma operação assincrona. Uma necessidade comum é executar duas ou mais operações assincronas consecutivas, onde cada operação subsequente começa quando a operação anterior é bem sucedida, com o resultado do passo anterior. Nós conseguimos isso criando uma cadeia de promises. Exemplo:
cy.title().then(title =>{
console.log(title)
})
#Describe/It describe: agrupa testes it: são os testes em sí .skip: ele pula o teste ou grupo de testes, pode ser usado mais de uma vez .only: executa apenas aquele teste ou grupo de testes. Não pode ser mais de uma vez ele sempre entende o ultimo .only
#Assertivas: Garantem que o teste executou da forma esperada. Ao usar expect, tentar colocar de um jeito legível: expect(a).to.be.equal(a) Procurar encadear as ações quando possível. Ex.:
cy.get('#buttonSimple')
.click()
.should('have.value', 'Obrigado!')
Nas buscas, o . é uma classe CSS, o # é uma busca por ID, [] ele busca dentro da propriedade do elemento, @ é quando usa-se aliases
Verbos mais utilizados: GET: O método GET solicita a representação de um recurso específico. Requisições utilizando o método GET devem retornar apenas dados. PUT: O método PUT substitui todas as atuais representações do recurso de destino pela carga de dados da requisição. POST: O método POST é utilizado para submeter uma entidade a um recurso específico, frequentemente causando uma mudança no estado do recurso ou efeitos colaterais no servidor. DELETE: O método DELETE remove um recurso específico.
Envio de dados principais: via URL, BODY, HEADER,
Status code: O status code geralmente vêm em numeros de três digitos, onde os mais comuns são serie 2xx - indicam sucesso serie 4xx - erro no cliente, quando se faz uma requisição incorreta serie 5xx - erro no servidor, quando faz a requisição correta mas o servidor apresenta algum problema
.reload() - recarrega a tela
.should() - Crie uma assertiva. As assertivas são repetidas automaticamente até que passem ou expirem. Não podem ser encadeados 'cy' (cy.should errado). o should só retenta o comando diretamente anterior, ele sempre monitora o elemento que vem do comando anterior
before() ou beforeEach() podem ser chamados nas specs ou dentro de cypress/support
para verificar o texto dentro de um campo de texto (textfield) usa-se have.value
.click({multiple:true}) - permite clicar em mais de um combobox em uma mesma chamada
Em combo e combo multiplo sempre leva-se em conta o value do elemento no HMTL
timeout padrão é 4 segundos, pode ser passado como parametro individual ou alterar no cypress.json
cy.wait() aguarda o tempo fixo na execução, o timeout é melhor pois é um limite máximo mas não fixo
should fica realizando a busca mesmo o get não tenha terminado, o then só tenta a hora que carrega o que precisa
should retorna o que foi enviado pelo elemento, o then vai ser o mesmo objeto mas se tiver um return ele devolve o return
cy.wrap() ele encapsula um objeto para que esse objeto seja usado com outros cy.
invoke chama uma propriedade de um objeto como função