Skip to content

Commit 9c03f50

Browse files
authored
Merge pull request #6 from MarCassMari/feat/melhorias-api
fix/consertar-testes-api
2 parents 1ea7969 + b60ed18 commit 9c03f50

File tree

5 files changed

+61
-7
lines changed

5 files changed

+61
-7
lines changed

.github/workflows/playwright.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ on:
33
push:
44
branches: [ main, master ]
55
pull_request:
6-
branches: [ main, master, feat/cenarios ]
6+
branches: [ main, master]
77

88
jobs:
99
test:
@@ -26,10 +26,9 @@ jobs:
2626
run: npx playwright install --with-deps
2727

2828
- name: Run Playwright tests
29-
env:
30-
GOREST_BASE_URL: ${{ secrets.GOREST_BASE_URL }}
29+
env:
3130
GOREST_TOKEN: ${{ secrets.GOREST_TOKEN }}
32-
31+
GOREST_BASE_URL: ${{ secrets.GOREST_BASE_URL }}
3332
run: npx playwright test
3433

3534
- name: Upload Test Report

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@ Este projeto entrega um **framework de automação E2E robusto e escalável**, d
7676
* **Programação Orientada a Objetos (POO)**: Utilização de classes e métodos para encapsular comportamentos, facilitando a reutilização de código e a legibilidade dos cenários.
7777
* **Isolamento e Independência**: Testes desenhados para serem independentes, com setups e cleanups que garantem a confiabilidade da execução (evitando estados compartilhados).
7878
* **Qualidade Contínua (CI/CD)**: Pipeline totalmente integrada via GitHub Actions, validando o projeto em múltiplos motores de renderização (Chromium e Firefox) a cada nova alteração.
79-
* **Testes de API com Validação de Contrato**: Além da UI, o projeto integra validações de camada de serviço utilizando **Zod**, garantindo que a comunicação com o backend siga rigorosamente os schemas definidos.
79+
* **Testes de API com Validação de Contrato**: Além da UI, o projeto integra validações de camada de serviço utilizando **Zod**, garantindo que a comunicação com o backend siga rigorosamente os schemas e status definidos.

playwright.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { defineConfig, devices } from '@playwright/test';
22
import dotenv from 'dotenv';
33
import path from 'path';
4-
5-
dotenv.config({ path: path.resolve(__dirname, '.env') });
4+
dotenv.config();
5+
//dotenv.config({ path: path.resolve(__dirname, '.env') });
66

77
/**
88
* Read environment variables from file.

tests/api/comments.spec.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { test, expect } from '@playwright/test';
2+
import { commentSchema, commentListSchema } from './schemas/commentsSchema';
3+
4+
test.describe('API GoRest - Comentários', () => {
5+
const baseUrl = process.env.GOREST_BASE_URL; //
6+
const headers = {
7+
Authorization: `Bearer ${process.env.GOREST_TOKEN}`, //
8+
'Content-Type': 'application/json',
9+
};
10+
11+
test('GET - Cenário de sucesso - Deve validar o status code da resposta', async ({ request }) => {
12+
const response = await request.get(`${baseUrl}/comments`, { headers });
13+
console.log('Base URL carregada:', process.env.GOREST_BASE_URL ? 'Sim' : 'Não');
14+
console.log('Token carregado:', process.env.GOREST_TOKEN ? 'Sim' : 'Não');
15+
16+
expect(response.status()).toBe(200);
17+
});
18+
19+
test('POST - Cenário de erro - Deve retornar erro 422 ao tentar comentar em um post inexistente', async ({
20+
request,
21+
}) => {
22+
const invalidPostId = 0;
23+
const response = await request.post(`${baseUrl}/posts/${invalidPostId}/comments`, {
24+
headers: {
25+
Authorization: `Bearer ${process.env.GOREST_TOKEN}`, //
26+
'Content-Type': 'application/json',
27+
},
28+
data: {
29+
name: 'Usuário Teste',
30+
email: 'teste@erro.com',
31+
body: 'Tentativa de comentário em post inválido',
32+
},
33+
});
34+
35+
expect(response.status()).toBe(422);
36+
37+
const body = await response.json();
38+
39+
expect(body[0]).toMatchObject({
40+
field: 'post',
41+
message: 'must exist',
42+
});
43+
});
44+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { z } from 'zod';
2+
3+
export const commentSchema = z.object({
4+
id: z.number(),
5+
post_id: z.number(),
6+
name: z.string(),
7+
email: z.string().email(),
8+
body: z.string(),
9+
});
10+
11+
export const commentListSchema = z.array(commentSchema);

0 commit comments

Comments
 (0)