Luminárias Cypress: 5 fatos importantes que você deve saber

Uma das melhores práticas na automação de teste é separar os dados de teste dos arquivos de teste. Este aspecto é um dos principais requisitos ao projetar a estrutura de teste. Cypress nos ajuda a separar os dados de teste com Cipreste Luminárias. Neste tópico, falaremos sobre Acessórios Cypress com implementação prática e exemplos em tempo real

Conteúdo

O que é um acessório no Cypress?

As luminárias Cypress podem ser usadas dados de origem de arquivos externos. As luminárias no Cypress ajudam você a ler ou escrever em arquivos. Uma das estruturas populares em automação de teste é a estrutura baseada em dados, onde separamos os dados dos arquivos de teste. Normalmente mantemos os dados em arquivo externo como o Excel e os lemos usando bibliotecas externas. Cypress nos fornece o mesmo recurso para ler dados de arquivos.

Cypress nos fornece uma pasta chamada luminárias, onde podemos criar arquivos JSON e ler dados a partir deles, onde podemos ler esses arquivos em vários arquivos de teste. Vamos armazenar os dados como valor chave emparelhar e acessá-los.

Como usar luminárias Cypress em testes?

Podemos acessar os fixtures Cypress através da seguinte sintaxe fornecida abaixo

cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)

Vamos entender os parâmetros que podem ser passados ​​nas luminárias

caminho de arquivo - o caminho para onde você armazenou seus dados de teste

codificação - A codificação usada durante o uso de um arquivo. Algumas das codificações são ascii, base64, hex, binário etc.

opções - Nas opções, podemos passar o tempo limite resposta. É para especificar o tempo limite para resolver cy.fixture ()

Como ler dados de luminárias no Cypress?

Estaremos definindo os dados de teste em um arquivo sob o fixação pasta. Estaremos acessando os dados de teste do arquivo JSON no script de teste usando acessórios Cypress.

Agora, vamos entender um exemplo para cipreste acessórios. Entraremos no url usando o nome de usuário e a senha. Então vamos armazenar os valores de nome de usuário e senha em um arquivo.

Vamos criar um arquivo chamado credenciais.json sob a pasta de fixação. Estaremos definindo as variáveis ​​no formato JSON.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
fixar 1
Exemplo de arquivo de fixação

Acessando os valores do arquivo Fixture para o arquivo de teste

Uma vez que definimos nossos valores JSON no credenciais.json , veremos como podemos acessá-los em nosso arquivo de teste usando fixtures Cypress.

Iremos acessar os dados do aparelho usando o this palavra-chave no gancho antes

describe("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })

No exemplo acima, estamos acessando nosso arquivo JSON via cy.fixture ('credenciais'). Uma vez que nosso nome de arquivo JSON é credenciais.json, estamos passando o nome do arquivo em cy.fixture (). Agora estamos usando o conceito de alias e definindo nossos dados como dados de teste. Com a variável dados de teste, podemos usar os valores de nome de usuário e senha em nosso arquivo de teste

describe("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Login com credenciais válidas ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Password]').clear() cy.get('[id=Password]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('ser.equal', this.testdata.adminUrl) }); });

Como você pode ver acima, em .type() estamos passando o valor de nosso arquivo credentials.json como este.testdata.nome de usuário. Da mesma forma, para senha, estamos acessando o valor usando isto.testdata.senha. Para o url, estamos usando a mesma forma que o nome de usuário e a senha.

Quando executamos o caso de teste, você pode ver o valor sendo impresso no painel. Desta forma, executamos nosso caso de teste usando Cypress Fixtures

fixar 2
Resultado do teste de fixação

Várias luminárias Cypress

Nesta seção, entenderemos como usar as luminárias Cypress com vários arquivos de luminárias.

Se quisermos usar dados de fixação diferentes para o mesmo arquivo de teste, por exemplo, existem dois conjuntos de credenciais que precisamos verificar para a página de login, como podemos acessar os arquivos?

Uma maneira é escrever vários it blocos que irão replicar o mesmo código repetidamente. De outra forma, podemos usar Acessórios Cypress para acessar diferentes testes dados no arquivo de especificação. Vamos ver como podemos conseguir isso usando acessórios Cypress

Já temos um arquivo de fixação chamado credenciais.json.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Agora vamos criar outro arquivo de fixação chamado userData.json onde usaremos um nome de usuário e senha inválidos diferentes.

{
    "username" : "[email protected]",
    "password" : "user",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Agora vamos ver como podemos acessar os dois dados diferentes em nosso arquivo de teste.

Iremos refatorar o mesmo arquivo de teste usando a condição de usar dois arquivos de fixture diferentes.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] describe('Automation Test Suite - Fixtures', function () { //percorrendo ambos os fixtues testValueFixtures.forEach((fixtureData) => { describe(fixtureData.context, () => { // acessando os dados de teste do arquivo de fixture before(function () { cy. fixture(fixtureData.name).then(function (testData) { this.testData = testData; }) }) it("login", function () { cy.visit('https://admin-demo.nopcommerce.com /admin/') cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testData.username) cy.get('[id= Senha]').clear() cy.get('[id=Senha]').type(this.testData.password) cy.get('[tipo=enviar]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
fixar 3
Acessando dois exemplos de dados de fixação

Inicialmente, estamos criando uma variável chamada testValueFixtures como ordem onde estamos criando o contexto de dois arquivos de fixture. No primeiro contexto, estamos passando o nome como 'Credenciais'e o segundo como'dados do usuário', pois eles representam nossos nomes de arquivo JSON onde temos nosso valor definido.

Em segundo lugar, estamos percorrendo as duas variáveis ​​de fixação no bloco de descrição. E como discutimos anteriormente, estamos acessando os dados antes do bloco usando .this()

O resto do código é o mesmo, onde estamos passando os dados no cy.get()

Quando executamos nosso teste, ele será executado em dois conjuntos, onde o primeiro caso passa com credenciais válidas e o segundo falha devido a credenciais inválidas

fixar 4
Fixture usando o primeiro arquivo de fixture

Como você pode ver no instantâneo acima, o primeiro caso de teste passou e inseriu o valor do primeiro arquivo de fixação credenciais.json

fixar 5
Exemplo de fixação usando o segundo arquivo de fixação

Como você pode ver na imagem acima, o teste falhou e os valores aprovados são do segundo arquivo de fixação userData.json

Você também pode ver como escrever fixtures Cypress usando o Modelo de Objeto de Página SUA PARTICIPAÇÃO FAZ A DIFERENÇA