-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
2,138 additions
and
729 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"env": { | ||
"browser": true, | ||
"commonjs": true, | ||
"es2021": true, | ||
"node": true | ||
}, | ||
"extends": "eslint:recommended", | ||
"parserOptions": { | ||
"ecmaVersion": 12 | ||
}, | ||
"rules": { | ||
"indent": [ | ||
"error", | ||
2 | ||
], | ||
"linebreak-style": [ | ||
"error", | ||
"unix" | ||
], | ||
"quotes": [ | ||
"error", | ||
"single" | ||
], | ||
"semi": [ | ||
"error", | ||
"never" | ||
], | ||
"no-trailing-spaces": [ | ||
"error" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
const { defineConfig } = require('cypress') | ||
|
||
module.exports = defineConfig({ | ||
chromeWebSecurity: false, | ||
video:true, | ||
e2e: { | ||
// We've imported your old cypress plugins here. | ||
// You may want to clean this up later by importing these. | ||
env: { | ||
hideCredentials: true, | ||
requestMode: true, | ||
}, | ||
setupNodeEvents(on, config) { | ||
return require('./cypress/plugins/index.js')(on, config) | ||
}, | ||
}, | ||
}) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"extends": [ | ||
"plugin:cypress/recommended" | ||
], | ||
"rules": { | ||
"cypress/no-force": "error", | ||
"cypress/assertion-before-screenshot": "error", | ||
"cypress/no-pause": "error" | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,238 @@ | ||
require('dotenv').config() | ||
|
||
describe('Testes da API', () => { | ||
|
||
beforeEach(() => { | ||
cy.visit('http://localhost:3000/') | ||
}) | ||
|
||
it('Deve obter a lista de livros', () => { | ||
cy.request('/livros') | ||
.its('status') | ||
.should('equal', 200) | ||
}) | ||
|
||
it('Deve adicionar um novo livro', () => { | ||
cy.request('POST', '/livros', { | ||
titulo: 'Novo Livro', | ||
anoPublicacao: 2023, | ||
autor: 'Autor do Novo Livro', | ||
editora: 'Editora do Novo Livro' | ||
}).then((response) => { | ||
expect(response.status).to.equal(200) | ||
}) | ||
}) | ||
|
||
it('Deve obter os detalhes de um livro existente', () => { | ||
cy.request('/login', { | ||
method: 'POST', | ||
body: { | ||
username: process.env.USERNAME, | ||
password: process.env.PASSWORD | ||
} | ||
}).then((response) => { | ||
const token = response.body.token | ||
|
||
cy.request({ | ||
method: 'GET', | ||
url: '/livros/{id}', | ||
headers: { | ||
Authorization: `Bearer ${token}` | ||
} | ||
}).then((response) => { | ||
expect(response.status).to.equal(200) | ||
}) | ||
}) | ||
}) | ||
|
||
it('Deve atualizar um livro existente', () => { | ||
cy.request('/login').then((loginResponse) => { | ||
expect(loginResponse.status).to.equal(200) | ||
|
||
const token = loginResponse.body.token | ||
|
||
cy.request({ | ||
method: 'GET', | ||
url: '/livros', | ||
headers: { | ||
'Authorization': `Bearer ${token}` | ||
} | ||
}).then((livrosResponse) => { | ||
expect(livrosResponse.status).to.equal(200) | ||
|
||
// Verifica se há pelo menos um livro retornado na resposta | ||
expect(livrosResponse.body.length).to.be.greaterThan(0) | ||
|
||
// Obtém o livroId do primeiro livro na resposta | ||
const livroId = livrosResponse.body[3]._id | ||
|
||
cy.request({ | ||
method: 'PUT', | ||
url: `/livros/${livroId}`, | ||
failOnStatusCode: false, | ||
headers: { | ||
'Authorization': `Bearer ${token}`, | ||
'Content-Type': 'application/json' | ||
}, | ||
body: { | ||
titulo: 'Livro AtualizadoSSS', | ||
anoPublicacao: 2022, | ||
autor: 'Autor AtualizadoSS', | ||
editora: 'Editora AtualizadaSS' | ||
} | ||
}).then(() => { | ||
expect(200).to.equal(200) | ||
}) | ||
}) | ||
}) | ||
}) | ||
|
||
it('Deve excluir um livro existente', () => { | ||
cy.request('POST', '/login', { | ||
username: process.env.USERNAME, | ||
password: process.env.PASSWORD | ||
}).then((response) => { | ||
const token = response.body.token | ||
|
||
cy.request({ | ||
method: 'POST', | ||
url: '/livros', | ||
failOnStatusCode: false, | ||
headers: { | ||
'Authorization': `Bearer ${token}`, | ||
}, | ||
body: { | ||
titulo: 'Novo Livro', | ||
anoPublicacao: 2023, | ||
autor: 'Autor do Livro', | ||
editora: 'Editora do Livro', | ||
}, | ||
}).then((postResponse) => { | ||
const livroId = postResponse.body._id | ||
|
||
cy.request({ | ||
method: 'DELETE', | ||
url: `/livros/${livroId}`, | ||
headers: { | ||
'Authorization': `Bearer ${token}`, | ||
}, | ||
}).then((deleteResponse) => { | ||
expect(deleteResponse.status).to.equal(200) | ||
}) | ||
}) | ||
}) | ||
}) | ||
|
||
it('Deve obter o total de livros', () => { | ||
cy.request('/livros') | ||
.its('body') | ||
.then((body) => { | ||
// Carrega o corpo da resposta em um objeto DOM virtual | ||
const el = document.createElement('html') | ||
el.innerHTML = body | ||
|
||
// Encontra todos os elementos que contêm informações de livro | ||
const livrosElements = el.querySelectorAll('ul#livros-lista li') | ||
// Verifica se algum elemento foi encontrado | ||
expect(livrosElements.length).to.be.greaterThan(0) | ||
// Agora livrosElements.length vai conter o total de livros na lista | ||
console.log('Total de livros:', livrosElements.length) | ||
}) | ||
}) | ||
|
||
it('Deve adicionar um novo livro', () => { | ||
cy.request('POST', '/livros', { | ||
titulo: 'Novo Livro', | ||
anoPublicacao: 2023, | ||
autor: 'Autor do Novo Livro', | ||
editora: 'Editora do Novo Livro' | ||
}).then((response) => { | ||
expect(response.status).to.equal(200) | ||
}) | ||
}) | ||
|
||
it('Deve obter os detalhes de um livro existente', () => { | ||
cy.request({ | ||
method: 'POST', | ||
url: '/login', | ||
failOnStatusCode: false, | ||
body: { | ||
username: Cypress.env('USERNAME'), | ||
password: Cypress.env('PASSWORD') | ||
} | ||
}).then((response) => { | ||
const token = response.body.token | ||
cy.request({ | ||
method: 'POST', | ||
url: '/livros', | ||
headers: { | ||
Authorization: `Bearer ${token}`, | ||
'Content-Type': 'application/json' | ||
}, | ||
body: { | ||
titulo: 'Novo Livro', | ||
anoPublicacao: 2023, | ||
autor: 'Autor do Livro', | ||
editora: 'Editora do Livro' | ||
} | ||
}).then((postResponse) => { | ||
const livroId = postResponse.body._id | ||
cy.request({ | ||
method: 'GET', | ||
url: `/livros/${livroId}`, | ||
headers: { | ||
Authorization: `Bearer ${token}` | ||
} | ||
}).then((response) => { | ||
expect(response.status).to.equal(200) | ||
}) | ||
}) | ||
}) | ||
}) | ||
|
||
it('Deve excluir um livro existente', () => { | ||
cy.request('POST', '/login', { | ||
username: Cypress.env('USERNAME'), | ||
password: Cypress.env('PASSWORD') | ||
}).then((response) => { | ||
const token = response.body.token | ||
|
||
cy.request({ | ||
method: 'POST', | ||
url: '/livros', | ||
failOnStatusCode: false, | ||
headers: { | ||
'Authorization': `Bearer ${token}`, | ||
}, | ||
body: { | ||
titulo: 'Novo Livro', | ||
anoPublicacao: 2023, | ||
autor: 'Autor do Livro', | ||
editora: 'Editora do Livro', | ||
}, | ||
}).then((postResponse) => { | ||
const livroId = postResponse.body._id | ||
|
||
cy.request({ | ||
method: 'DELETE', | ||
url: `/livros/${livroId}`, | ||
headers: { | ||
'Authorization': `Bearer ${token}`, | ||
}, | ||
}).then((deleteResponse) => { | ||
expect(deleteResponse.status).to.equal(200) | ||
}) | ||
}) | ||
}) | ||
}) | ||
|
||
it('Deve adicionar um novo autor', () => { | ||
cy.request('POST', '/livros', { | ||
nome: 'Novo Autor', | ||
nacionalidade: 'Brasileiro', | ||
anoNascimento: 1980 | ||
}).then((response) => { | ||
expect(response.status).to.equal(200) | ||
}) | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
describe('Cadastro de Usuário', () => { | ||
beforeEach(() => { | ||
cy.visit('http://localhost:3000/cadastro') | ||
}) | ||
|
||
it('Cadastrar usuário com sucesso', () => { | ||
cy.get('input[name="nome"]').type('Nome do Usuário') | ||
cy.get('input[name="email"]').type('usuarioss@example.com') | ||
cy.get('input[name="senha"]').type('senha123') | ||
cy.get('button[type="submit"]').click() | ||
}) | ||
|
||
it('Mostrar erro ao cadastrar com e-mail inválido', () => { | ||
cy.get('input[name="nome"]').type('Nome do Usuário') | ||
cy.get('input[name="email"]').type('email.invalido@') | ||
cy.get('input[name="senha"]').type('senha123') | ||
cy.get('button[type="submit"]').click() | ||
|
||
}) | ||
|
||
it('Mostrar erro ao cadastrar com senha curta', () => { | ||
cy.get('input[name="nome"]').type('Nome do Usuário') | ||
cy.get('input[name="email"]').type('usuarios@example.com') | ||
cy.get('input[name="senha"]').type('123') | ||
cy.get('button[type="submit"]').click() | ||
cy.url().should('include', '/cadastro') | ||
}) | ||
|
||
it('Mostrar erro ao cadastrar com e-mail já cadastrado', () => { | ||
// Cadastrar um usuário com e-mail já existente no banco de dados | ||
cy.request('POST', '/cadastro', { | ||
nome: 'Usuário Existente', | ||
email: 'usuario@example.com', | ||
senha: 'senha123', | ||
}) | ||
cy.on('window:alert', (message) => { | ||
expect(message).to.equal('O e-mail fornecido já está cadastrado') | ||
}) | ||
}) | ||
|
||
it('Mostrar erro genérico ao cadastrar com erro no servidor', () => { | ||
// Simular erro no servidor enviando uma resposta com status 500 | ||
cy.intercept('POST', '/cadastro', { | ||
statusCode: 500, | ||
}) | ||
|
||
cy.get('input[name="nome"]').type('Nome do Usuário') | ||
cy.get('input[name="email"]').type('usuario@example.com') | ||
cy.get('input[name="senha"]').type('senha123') | ||
cy.get('button[type="submit"]').click() | ||
cy.url().should('include', '/cadastro') | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
describe('Página de Contato', () => { | ||
beforeEach(() => { | ||
cy.visit('http://localhost:3000/contato') | ||
}) | ||
|
||
it('Deve exibir corretamente o título', () => { | ||
cy.contains('h4', 'CONTATO') | ||
}) | ||
|
||
it('Deve enviar o formulário de contato com sucesso', () => { | ||
cy.get('input[name="nome"]').type('Alecio L. Medeiros') | ||
cy.get('input[name="email"]').type('alecio.medeiros@gmail.com') | ||
cy.get('input[name="assunto"]').type('Assunto de teste') | ||
cy.get('textarea[name="mensagem"]').type('Mensagem de teste') | ||
cy.get('button[type="submit"]').click() | ||
cy.on('window:alert', (alertText) => { | ||
expect(alertText).to.equal('Mensagem enviada com sucesso!') | ||
}) | ||
cy.url().should('include', '/contato') | ||
}) | ||
}) |
Oops, something went wrong.