{"id":33347321,"url":"https://github.com/andersonkaiti/tasks-plus","last_synced_at":"2026-04-06T08:31:50.476Z","repository":{"id":325322569,"uuid":"1099458935","full_name":"andersonkaiti/tasks-plus","owner":"andersonkaiti","description":"Projeto prático da disciplina de Testes e Qualidade de Software","archived":false,"fork":false,"pushed_at":"2025-11-24T16:30:37.000Z","size":910,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-28T04:57:13.260Z","etag":null,"topics":["bcryptjs","cypress","date-fns","drizzle-orm","fakerjs","fastify","fastify-swa","js-cookie","nuqs","pg","react-hook-form","shadcn-ui","t3-oss","tailwindcss","tanstack-query","tanstack-router","tsx","vite","vitest","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andersonkaiti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-19T02:43:23.000Z","updated_at":"2025-11-24T16:30:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andersonkaiti/tasks-plus","commit_stats":null,"previous_names":["andersonkaiti/tasks-plus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andersonkaiti/tasks-plus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonkaiti%2Ftasks-plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonkaiti%2Ftasks-plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonkaiti%2Ftasks-plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonkaiti%2Ftasks-plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andersonkaiti","download_url":"https://codeload.github.com/andersonkaiti/tasks-plus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andersonkaiti%2Ftasks-plus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31464604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcryptjs","cypress","date-fns","drizzle-orm","fakerjs","fastify","fastify-swa","js-cookie","nuqs","pg","react-hook-form","shadcn-ui","t3-oss","tailwindcss","tanstack-query","tanstack-router","tsx","vite","vitest","zod"],"created_at":"2025-11-22T08:00:46.211Z","updated_at":"2026-04-06T08:31:50.455Z","avatar_url":"https://github.com/andersonkaiti.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📋 Tasks Plus - Plano de Teste e Gestão de Qualidade\n\n\u003cdiv align=\"center\"\u003e\n\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9.3-007ACC?style=flat\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![React](https://img.shields.io/badge/React-19.2.0-20232A?style=flat\u0026logo=react\u0026logoColor=61DAFB)](https://react.dev/)\n[![Fastify](https://img.shields.io/badge/Fastify-5.6.2-202020?style=flat\u0026logo=fastify\u0026logoColor=white)](https://fastify.dev/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-8.16.3-316192?style=flat\u0026logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)\n[![Vitest](https://img.shields.io/badge/Vitest-4.0.10-6E9F18?style=flat\u0026logo=vitest\u0026logoColor=white)](https://vitest.dev/)\n[![Cypress](https://img.shields.io/badge/Cypress-15.7.0-17202C?style=flat\u0026logo=cypress\u0026logoColor=white)](https://www.cypress.io/)\n[![Vite](https://img.shields.io/badge/Vite-7.2.2-646CFF?style=flat\u0026logo=vite\u0026logoColor=white)](https://vitejs.dev/)\n[![TailwindCSS](https://img.shields.io/badge/Tailwind_CSS-4.1.17-38B2AC?style=flat\u0026logo=tailwind-css\u0026logoColor=white)](https://tailwindcss.com/)\n\n\u003c/div\u003e\n\n---\n\nEste documento detalha as fases obrigatórias do processo de Garantia de Qualidade (QA) aplicadas ao projeto **Tasks Plus**, um sistema completo de gerenciamento de tarefas com autenticação e operações CRUD.\n\n## 🛠️ Tecnologias Utilizadas\n\n### Frontend\n\n| Categoria | Tecnologia | Versão | Descrição |\n|-----------|-----------|--------|-----------|\n| **Framework** | React | ^19.2.0 | Biblioteca JavaScript para construção de interfaces |\n| **Build Tool** | Vite | ^7.2.2 | Build tool e dev server de alta performance |\n| **Roteamento** | TanStack Router | ^1.136.8 | Roteamento type-safe para React |\n| **Estado/Queries** | TanStack Query | ^5.90.10 | Gerenciamento de estado servidor e cache |\n| **Estilização** | TailwindCSS | ^4.1.17 | Framework CSS utility-first |\n| **UI Components** | Radix UI | ^1.4.3 | Componentes acessíveis e não estilizados |\n| **Formulários** | React Hook Form | ^7.66.1 | Biblioteca para gerenciamento de formulários |\n| **Validação** | Zod | ^4.1.12 | Schema validation TypeScript-first |\n| **Linguagem** | TypeScript | ~5.9.3 | Superset do JavaScript com tipagem estática |\n\n### Backend\n\n| Categoria | Tecnologia | Versão | Descrição |\n|-----------|-----------|--------|-----------|\n| **Framework** | Fastify | ^5.6.2 | Framework web rápido e eficiente para Node.js |\n| **ORM** | Drizzle ORM | ^0.44.7 | ORM type-safe e leve |\n| **Banco de Dados** | PostgreSQL | ^8.16.3 | Sistema de gerenciamento de banco de dados relacional |\n| **Autenticação** | JWT | ^10.0.0 | JSON Web Tokens para autenticação |\n| **Segurança** | bcryptjs | ^3.0.3 | Hashing de senhas |\n| **Validação** | Zod | ^4.1.12 | Schema validation |\n| **Documentação** | Scalar API Reference | ^1.39.3 | Documentação interativa da API |\n| **Linguagem** | TypeScript | ^5.9.3 | Superset do JavaScript com tipagem estática |\n\n### Testes e Qualidade\n\n| Categoria | Tecnologia | Versão | Descrição |\n|-----------|-----------|--------|-----------|\n| **Framework de Testes** | Vitest | ^4.0.10 | Framework de testes rápido e moderno |\n| **Framework de Testes** | Cypress | ^15.7.0 | Framework de testes E2E |\n| **Coverage** | Vitest Coverage | ^4.0.12 | Ferramenta de cobertura de código |\n| **Linter/Formatter** | Biome | 2.3.6 | Linter e formatter rápido |\n| **Faker** | Faker.js | ^10.1.0 | Geração de dados de teste |\n\n### DevOps e Ferramentas\n\n| Categoria | Tecnologia | Versão | Descrição |\n|-----------|-----------|--------|-----------|\n| **Gerenciador de Pacotes** | pnpm | 10.18.2 | Gerenciador de pacotes eficiente |\n| **CI/CD** | GitHub Actions | - | Automação de workflows |\n| **Controle de Versão** | Git | - | Sistema de controle de versão |\n\n---\n\n## 📖 Índice\n\n- [🏗️ Arquitetura do Sistema](#️-arquitetura-do-sistema)\n- [1. Descoberta e Requisitos Testáveis](#1-descoberta-e-requisitos-testáveis)\n- [2. Plano de Teste e Gestão](#2-plano-de-teste-e-gestão)\n- [3. Matriz de Rastreabilidade](#3-matriz-de-rastreabilidade)\n- [4. Casos de Teste](#4-casos-de-teste)\n- [5. Dados e Ambiente](#5-dados-e-ambiente)\n- [🧪 Executando os Testes Automatizados](#-executando-os-testes-automatizados)\n- [6. Execução Manual e Defeitos](#6-execução-manual-e-defeitos)\n- [7. Automação Mínima (UI e API)](#7-automação-mínima-ui-e-api)\n- [8. TDD e CI/CD](#8-tdd-e-cicd)\n- [9. Métricas e Relatório Final](#9-métricas-e-relatório-final)\n- [10. Guia de Nomenclatura](#10-guia-de-nomenclatura)\n\n---\n\n## 🏗️ Arquitetura do Sistema\n\n### Diagrama de Arquitetura Geral\n\nO diagrama abaixo ilustra a arquitetura geral do sistema Tasks Plus, mostrando os principais componentes e suas interações:\n\n```mermaid\ngraph TB\n    subgraph \"Frontend - Web Application\"\n        A[React Components] --\u003e B[TanStack Router]\n        A --\u003e C[TanStack Query]\n        B --\u003e D[Custom Hooks]\n        D --\u003e E[HTTP Client\u003cbr/\u003eAPI Client]\n        C --\u003e E\n        A --\u003e F[React Hook Form]\n        F --\u003e G[Zod Validation]\n    end\n\n    subgraph \"Backend - API Server\"\n        E --\u003e H[Fastify Server]\n        H --\u003e I[Auth Middleware\u003cbr/\u003eJWT]\n        H --\u003e J[Route Handlers]\n        J --\u003e K[Zod Validation]\n        J --\u003e L[Drizzle ORM]\n        I --\u003e J\n    end\n\n    subgraph \"Database\"\n        L --\u003e M[(PostgreSQL)]\n    end\n\n    subgraph \"External Services\"\n        H --\u003e N[Swagger/Scalar\u003cbr/\u003eAPI Docs]\n    end\n\n    subgraph \"DevOps\"\n        O[GitHub Actions] --\u003e P[CI/CD Pipeline]\n        P --\u003e Q[Vitest Tests]\n        P --\u003e R[Lint \u0026 Format]\n    end\n\n    style A fill:#61DAFB\n    style H fill:#202020\n    style M fill:#316192\n    style O fill:#181717\n```\n\n### Diagrama de Sequência - Fluxo de Criação de Tarefa\n\nO diagrama abaixo detalha o fluxo completo de uma operação de criação de tarefa:\n\n```mermaid\nsequenceDiagram\n    participant U as Usuário\n    participant F as Frontend\u003cbr/\u003e(React)\n    participant API as HTTP Client\n    participant S as Backend\u003cbr/\u003e(Fastify)\n    participant DB as PostgreSQL\n\n    U-\u003e\u003eF: Preenche e submete formulário\n    F-\u003e\u003eF: Valida dados (Zod)\n    F-\u003e\u003eAPI: POST /tasks (com JWT)\n    API-\u003e\u003eS: Requisição HTTP\n    S-\u003e\u003eS: Valida JWT e dados\n    S-\u003e\u003eDB: INSERT INTO tasks\n    DB--\u003e\u003eS: Tarefa criada\n    S--\u003e\u003eAPI: 201 Created\n    API--\u003e\u003eF: Sucesso\n    F--\u003e\u003eU: Tarefa criada com sucesso\n```\n\n### Diagrama de Sequência - Fluxo de Autenticação\n\nO diagrama abaixo mostra o fluxo completo de autenticação (sign-in):\n\n```mermaid\nsequenceDiagram\n    participant U as Usuário\n    participant F as Frontend\u003cbr/\u003e(React)\n    participant API as HTTP Client\n    participant S as Backend\u003cbr/\u003e(Fastify)\n    participant DB as PostgreSQL\n\n    U-\u003e\u003eF: Informa email e senha\n    F-\u003e\u003eF: Valida dados (Zod)\n    F-\u003e\u003eAPI: POST /auth/sign-in\n    API-\u003e\u003eS: Requisição HTTP\n    S-\u003e\u003eDB: Busca usuário e valida senha\n    alt Credenciais inválidas\n        DB--\u003e\u003eS: Usuário não encontrado/senha incorreta\n        S--\u003e\u003eAPI: 401 Unauthorized\n        API--\u003e\u003eF: Erro\n        F--\u003e\u003eU: Exibe mensagem de erro\n    else Credenciais válidas\n        DB--\u003e\u003eS: Usuário encontrado\n        S-\u003e\u003eS: Gera JWT token\n        S--\u003e\u003eAPI: 200 OK + token\n        API--\u003e\u003eF: Token recebido\n        F-\u003e\u003eF: Armazena token\n        F--\u003e\u003eU: Redireciona para dashboard\n    end\n```\n\n---\n\n## 1. Descoberta e Requisitos Testáveis\n\n### 🎯 O que o sistema deve fazer?\n\n- [x] Gerenciar usuários e tarefas\n- [x] Permitir login/logout seguro\n- [x] Operações CRUD (Criar, Ler, Atualizar, Deletar) para tarefas\n- [x] Interface moderna e responsiva\n- [x] API RESTful documentada\n\n### 📝 Requisitos com critérios claros\n\n| ID | Requisito | Dado | Quando | Então |\n|----|-----------|------|--------|-------|\n| **R1** | Login válido | que o usuário está na página de login | informar email e senha válidos | deve acessar o painel principal |\n| **R2** | Login inválido | que o usuário está na página de login | informar dados incorretos | deve ver mensagem de erro |\n| **R3** | Criar tarefa | que o usuário está logado | preencher os dados obrigatórios e salvar | a tarefa será criada e listada |\n\n### 🔄 Fluxos Principais e Riscos\n\n- **Fluxo principal:** Login → Gerenciar tarefas → Logout\n- **Riscos identificados:** \n  - Perda de dados\n  - Falhas de autenticação\n  - Indisponibilidade do serviço\n\n---\n\n## 2. Plano de Teste e Gestão\n\n- **Objetivos:** Garantir que o sistema atenda requisitos funcionais e não funcionais com qualidade.\n- **Tipos de Teste:** Funcionais, E2E, Não Funcionais (desempenho, usabilidade), API.\n- **Ferramentas:** GitHub, Git e Vitest.\n- **Datas:** Fase de testes entre 19/11/2025 e 20/11/2025.\n- **Critérios Início/Fim:**\n  - **Início:** Aplicação deployada em staging\n  - **Fim:** 100% dos testes críticos executados e principais defeitos corrigidos\n\n---\n\n## 3. Matriz de Rastreabilidade\n\n| Requisito | Descrição | Casos de Teste |\n|-----------|-----------|----------------|\n| R1 | Login válido | CT-01, CT-04 |\n| R2 | Login inválido / Autenticação | CT-02, CT-05, CT-06, CT-07 |\n| R3 | Criar tarefa | CT-08, CT-09, CT-10 |\n| R4 | Listar tarefas | CT-11, CT-12, CT-13 |\n| R5 | Atualizar tarefa | CT-14, CT-15, CT-16, CT-17 |\n| R6 | Deletar tarefa | CT-18, CT-19, CT-20, CT-21 |\n| R7 | Cadastro de usuário | CT-03 |\n\n---\n\n## 4. Casos de Teste\n\n### 📋 Testes Automatizados Implementados\n\n#### 🔐 Autenticação\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-01 | Login com credenciais válidas               | Unit/E2E  | `sign-in.test.ts`             | Status 200, token JWT retornado        |\n| CT-02 | Login com senha incorreta                   | Unit      | `sign-in.test.ts`             | Status 400, mensagem de erro           |\n| CT-03 | Cadastro de novo usuário                    | E2E       | `sign-up.e2e.ts`              | Status 201, usuário criado             |\n| CT-04 | Login e navegação E2E                       | E2E       | `sign-in.cy.ts` (Cypress)     | Login realizado, painel visível        |\n\n#### 🛡️ Middleware de Autenticação\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-05 | Bloquear acesso sem token                   | Unit      | `auth.test.ts`                | Status 401, acesso negado              |\n| CT-06 | Bloquear acesso com token inválido          | Unit      | `auth.test.ts`                | Status 401, acesso negado              |\n| CT-07 | Permitir acesso com token válido            | Unit      | `auth.test.ts`                | Status 200, acesso permitido           |\n\n#### ✅ Operações CRUD - Criar Tarefa\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-08 | Criar tarefa com dados válidos              | Unit/E2E  | `create-task.test.ts`         | Status 201, tarefa criada              |\n| CT-09 | Bloquear criação sem autenticação           | Unit      | `create-task.test.ts`         | Status 401, acesso negado              |\n| CT-10 | Criar tarefa E2E                            | E2E       | `create-task.cy.ts` (Cypress) | Mensagem de sucesso na UI              |\n\n#### 📝 Operações CRUD - Listar Tarefas\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-11 | Listar tarefas do usuário autenticado       | Unit/E2E  | `get-tasks.test.ts`           | Status 200, lista de tarefas           |\n| CT-12 | Buscar tarefa por ID                        | Unit/E2E  | `get-tasks-by-id.test.ts`     | Status 200, tarefa específica          |\n| CT-13 | Listar tarefas E2E                          | E2E       | `get-tasks.cy.ts` (Cypress)   | Listagem visível na UI                 |\n\n#### ✏️ Operações CRUD - Atualizar Tarefa\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-14 | Atualizar tarefa existente                  | Unit      | `update-task.test.ts`         | Status 200, tarefa atualizada          |\n| CT-15 | Bloquear atualização de tarefa inexistente  | Unit      | `update-task.test.ts`         | Status 404, tarefa não encontrada      |\n| CT-16 | Bloquear atualização sem autenticação       | Unit      | `update-task.test.ts`         | Status 401, acesso negado              |\n| CT-17 | Atualizar tarefa E2E                        | E2E       | `update-task.cy.ts` (Cypress) | Mensagem de sucesso na UI              |\n\n#### 🗑️ Operações CRUD - Deletar Tarefa\n\n| ID    | Objetivo                                    | Tipo      | Arquivo                       | Resultado Esperado                     |\n|-------|---------------------------------------------|-----------|-------------------------------|----------------------------------------|\n| CT-18 | Deletar tarefa existente                    | Unit      | `delete-task.test.ts`         | Status 200, tarefa removida            |\n| CT-19 | Bloquear deleção de tarefa inexistente      | Unit      | `delete-task.test.ts`         | Status 404, tarefa não encontrada      |\n| CT-20 | Bloquear deleção sem autenticação           | Unit      | `delete-task.test.ts`         | Status 401, acesso negado              |\n| CT-21 | Deletar tarefa E2E                          | E2E       | `delete-task.cy.ts` (Cypress) | Tarefa removida da listagem            |\n\n### 📊 Resumo da Cobertura de Testes\n\n| Categoria | Quantidade de Casos | Técnicas Aplicadas |\n|-----------|--------------------|--------------------|\n| **Autenticação** | 4 casos | Equivalência, Limite, E2E |\n| **Autorização** | 3 casos | Partição, Limite |\n| **Criar Tarefa** | 3 casos | Equivalência, Autenticação, E2E |\n| **Listar Tarefas** | 3 casos | API, E2E |\n| **Atualizar Tarefa** | 4 casos | CRUD, Limite, E2E |\n| **Deletar Tarefa** | 4 casos | CRUD, Limite, E2E |\n| **Total** | **21 casos** | Unit, Integration, E2E |\n\n\u003e 💡 **Nota:** Todos os casos de teste estão implementados e automatizados. Os testes unitários e de integração utilizam **Vitest**, enquanto os testes E2E utilizam **Cypress** para validação completa dos fluxos de usuário.\n\n---\n\n## 5. Dados e Ambiente\n\n### 📊 Massa de dados\n\n- **Usuários de teste:**\n  - Email: `teste1@email.com`\n  - Senha: `Senha@123`\n- **Tarefas de exemplo** para cada cenário de teste\n\n### 🚀 Guia de Instalação\n\n1. **Clone o repositório:**\n   ```bash\n   git clone \u003cURL\u003e\n   cd tasks-plus\n   ```\n\n2. **Instale as dependências:**\n   ```bash\n   pnpm install\n   ```\n\n3. **Configure as variáveis de ambiente:**\n   - Copie os arquivos `.env.example` para `.env` em cada workspace (`api` e `web`)\n   - Configure as variáveis necessárias (banco de dados, JWT secret, etc.)\n\n4. **Execute as migrações do banco de dados:**\n   ```bash\n   cd api\n   pnpm db:migrate\n   ```\n\n5. **Inicie o servidor de desenvolvimento:**\n   ```bash\n   # Terminal 1 - API\n   cd api\n   pnpm dev\n\n   # Terminal 2 - Frontend\n   cd web\n   pnpm dev\n   ```\n\n6. **Acesse a aplicação:**\n   - Frontend: `http://localhost:5173` (ou porta configurada)\n   - API: `http://localhost:3333` (ou porta configurada)\n   - Documentação da API: `http://localhost:3333/docs`\n\n---\n\n## 🧪 Executando os Testes Automatizados\n\nEsta seção descreve como executar os testes automatizados do projeto, tanto para o back-end quanto para o front-end.\n\n### Back-end (API) - Vitest\n\nO back-end utiliza **Vitest** como framework de testes e **supertest** para testes de integração e E2E. A configuração está definida em `api/vitest.config.ts`.\n\n#### Tipos de Testes no Back-end\n\n- **Testes Unitários** (`.test.ts`): Testam componentes individuais, como middlewares e validações\n- **Testes E2E** (`.e2e.ts`): Testam os endpoints completos da API, incluindo autenticação e operações CRUD\n\n#### Comandos para Executar os Testes do Back-end\n\n```bash\n# Entre no diretório da API\ncd api\n\n# Execute todos os testes (unitários + E2E)\npnpm test\n```\n\n#### Arquivos de Teste do Back-end\n\nOs testes estão localizados em:\n- `src/middlewares/*.test.ts` - Testes de middlewares\n- `src/routes/auth/*.{test,e2e}.ts` - Testes de autenticação (sign-in, sign-up)\n- `src/routes/tasks/*.{test,e2e}.ts` - Testes de operações CRUD de tarefas\n\n#### Configuração de Ambiente para Testes\n\nOs testes utilizam um arquivo `.env.test` separado para evitar conflitos com o ambiente de desenvolvimento. Certifique-se de configurá-lo adequadamente antes de executar os testes.\n\n---\n\n### Front-end (Web) - Cypress\n\nO front-end utiliza **Cypress** para testes E2E, testando toda a aplicação desde a interface do usuário até a API. A configuração está definida em `web/cypress.config.ts`.\n\n#### Tipos de Testes no Front-end\n\n- **Testes E2E** (`.cy.ts`): Testam fluxos completos de usuário através da interface web\n\n#### Comandos para Executar os Testes do Front-end\n\n```bash\n# Entre no diretório do front-end\ncd web\n\n# Execute os testes Cypress em modo headless (sem interface gráfica)\npnpm exec cypress run\n\n# Execute os testes Cypress em modo interativo (com interface gráfica)\npnpm exec cypress open\n\n# Execute os testes de uma spec específica\npnpm exec cypress run --spec \"cypress/e2e/auth/sign-in.cy.ts\"\n```\n\n#### Arquivos de Teste do Front-end\n\nOs testes estão localizados em:\n- `cypress/e2e/auth/*.cy.ts` - Testes de autenticação (sign-in, sign-up)\n- `cypress/e2e/tasks/*.cy.ts` - Testes de operações CRUD de tarefas\n\n#### Pré-requisitos para Testes do Front-end\n\nAntes de executar os testes do Cypress, certifique-se de que:\n1. O servidor back-end está rodando (`cd api \u0026\u0026 pnpm dev`)\n2. O arquivo `.env` do front-end está configurado com a URL correta da API\n3. O banco de dados está acessível e populado com dados de teste (se necessário)\n\n---\n\n### 📊 Executando Todos os Testes\n\nPara executar todos os testes do projeto (back-end + front-end) em sequência:\n\n```bash\n# Na raiz do projeto\n\n# Passo 1: Execute os testes do back-end\ncd api\npnpm test\ncd ..\n\n# Passo 2: Inicie o servidor da API para os testes E2E do front-end\ncd api\npnpm dev:test \u0026\ncd ..\n\n# Passo 3: Execute os testes E2E do front-end\ncd web\npnpm exec cypress run\ncd ..\n\n# Passo 4: Encerre o servidor da API\n# (kill o processo iniciado no Passo 2)\n```\n\n---\n\n## 6. Execução Manual e Defeitos\n\nEsta seção apresenta as evidências visuais dos testes manuais realizados no sistema, resultados da execução e defeitos identificados.\n\n### 📸 Evidências Visuais\n\n#### 🔐 Autenticação\n\n##### Sign Up (Cadastro) - CT-06\n![Sign Up](.github/images/tests/auth/sign-up.png)\n*Evidência: IMG-006*\n\n##### Sign In (Login) - CT-01\n![Sign In](.github/images/tests/auth/sign-in.png)\n*Evidência: IMG-001*\n\n#### 📋 Operações com Tarefas\n\n##### Listar Tarefas - CT-07\n![Listar Tarefas](.github/images/tests/tasks/get_tasks.png)\n*Evidência: IMG-007*\n\n##### Buscar Tarefa por ID - CT-08\n![Buscar Tarefa por ID](.github/images/tests/tasks/get_task_by_id.png)\n*Evidência: IMG-008*\n\n##### Criar Tarefa - CT-04\n![Criar Tarefa](.github/images/tests/tasks/task_created.png)\n*Evidência: IMG-004*\n\n##### Atualizar Tarefa - CT-09\n![Atualizar Tarefa](.github/images/tests/tasks/task_updated.png)\n*Evidência: IMG-009*\n\n##### Deletar Tarefa - CT-10\n![Deletar Tarefa](.github/images/tests/tasks/task_deleted.png)\n*Evidência: IMG-010*\n\n### 📊 Resultados da Execução\n\n#### Testes Manuais (Evidências Visuais)\n\nEsta seção documenta os testes manuais realizados para validação visual da interface. Os 21 casos de teste automatizados documentados na **Seção 4** são executados automaticamente via Vitest (back-end) e Cypress (front-end).\n\n| ID    | Caso de Teste                | Status | Evidência      | Observações                          |\n|-------|-------------------------------|--------|----------------|--------------------------------------|\n| TM-01 | Login visual com sucesso      | ✅ Passou | IMG-001        | Login realizado com sucesso           |\n| TM-02 | Cadastro visual de usuário    | ✅ Passou | IMG-006        | Usuário cadastrado com sucesso       |\n| TM-03 | Listagem visual de tarefas    | ✅ Passou | IMG-007        | Listagem funcionando                 |\n| TM-04 | Visualização de tarefa por ID | ✅ Passou | IMG-008        | Busca retornando dados corretos      |\n| TM-05 | Criação visual de tarefa      | ✅ Passou | IMG-004        | Tarefa criada e listada              |\n| TM-06 | Atualização visual de tarefa  | ✅ Passou | IMG-009        | Tarefa atualizada com sucesso        |\n| TM-07 | Deleção visual de tarefa      | ✅ Passou | IMG-010        | Tarefa removida com sucesso          |\n\n**Taxa de Aprovação (Testes Manuais):** 100% (7/7 casos passaram)\n\n#### Testes Automatizados\n\n- **Total de Casos Automatizados:** 21 casos (conforme Seção 4)\n- **Framework Back-end:** Vitest (15 testes)\n- **Framework Front-end:** Cypress (6 testes)\n- **Taxa de Aprovação:** 100% (21/21 casos passaram)\n- **Comando de Execução:** Ver seção \"Executando os Testes Automatizados\"\n\n\u003e 💡 **Observação:** Durante os testes, foi identificado um problema menor relacionado ao tratamento de erros no backend, que foi rapidamente corrigido durante o desenvolvimento.\n\n### 🐛 Defeitos Registrados\n\n#### BUG-001 — Tratamento de erros no error handler do backend\n- **Ambiente:** v1.0.0-local\n- **Severidade:** Baixa\n- **Prioridade:** Média\n- **Caso de Teste Relacionado:** Testes de integração\n- **Descrição:**\n  - **Esperado:** O error handler do backend deve tratar adequadamente todos os tipos de erro e retornar respostas padronizadas\n  - **Obtido:** Alguns handlers de erro não estavam formatando corretamente as respostas de erro\n  - **Passos para Reproduzir:**\n    1. Enviar requisição com dados inválidos\n    2. Observar formato da resposta de erro\n    3. Verificar se está seguindo o padrão esperado\n  - **Evidências:** Logs do servidor\n  - **Status:** ✅ Corrigido\n  - **Tempo de Correção:** ~1h\n  - **Solução:** Ajuste nos handlers de erro para garantir formatação consistente das respostas\n\n### 📋 Resultados da Execução (Ciclo 2 - Regressão)\n\nApós correção do defeito identificado:\n\n| Categoria | Casos Executados | Status | Observações                          |\n|-----------|------------------|--------|--------------------------------------|\n| Testes Automatizados | 21 casos | ✅ Passou | Todos os testes passaram |\n| Testes Manuais | 7 casos | ✅ Passou | Error handler corrigido e validado |\n\n**Taxa de Aprovação Ciclo 2:** 100% (28/28 casos passaram - 21 automatizados + 7 manuais)\n\n---\n\n## 7. Automação Mínima (UI e API)\n\nEsta seção documenta os testes automatizados implementados, cumprindo os requisitos mínimos de automação: login válido/inválido, fluxo E2E completo e testes de API.\n\n### 🧪 Testes Automatizados no Back-end (API)\n\nOs testes de API foram implementados utilizando **Vitest** com **supertest**, uma biblioteca equivalente ao Postman/Newman para testes de APIs HTTP automatizados.\n\n#### Cobertura de Testes de API\n\n**1. Autenticação (Login Válido/Inválido)**\n- ✅ `sign-in.test.ts` - Login com credenciais válidas (Status 200)\n- ✅ `sign-in.test.ts` - Login com senha incorreta (Status 400)\n- ✅ `sign-up.e2e.ts` - Cadastro de novo usuário (Status 201)\n\n**2. Fluxo E2E Completo (API)**\n- ✅ `create-task.e2e.ts` - Criar tarefa via API (Status 201)\n- ✅ `get-tasks.e2e.ts` - Listar tarefas do usuário autenticado\n- ✅ `get-tasks-by-id.e2e.ts` - Buscar tarefa específica por ID\n- ✅ `update-task.e2e.ts` - Atualizar tarefa existente (Status 200)\n- ✅ `delete-task.e2e.ts` - Deletar tarefa existente (Status 200)\n\n**3. Validações e Tratamento de Erros (API)**\n- ✅ Testes de autorização (middleware) - `auth.test.ts`\n- ✅ Validação de dados de entrada com Zod\n- ✅ Casos de erro (404, 401, 400) para todas as operações CRUD\n\n#### Execução dos Testes de API\n\n```bash\ncd api\npnpm test\n```\n\nTodos os testes de API são executados automaticamente no CI/CD via GitHub Actions.\n\n---\n\n### 🔍 Testes Manuais de API\n\nPara validação manual e exploração dos endpoints, foi utilizado o **Yaak**, uma ferramenta moderna de teste de APIs similar ao Postman.\n\nAs evidências dos testes manuais de API estão documentadas nas imagens da seção \"6. Execução Manual e Defeitos\":\n- Criação de tarefas (IMG-004)\n- Listagem de tarefas (IMG-007)\n- Busca por ID (IMG-008)\n- Atualização (IMG-009)\n- Deleção (IMG-010)\n\nO Yaak foi escolhido por sua interface intuitiva e suporte nativo a ambientes modernos de desenvolvimento.\n\n---\n\n### 🎭 Testes Automatizados no Front-end (UI E2E)\n\nOs testes E2E do front-end foram automatizados utilizando **Cypress**, cobrindo os principais fluxos de usuário desde a interface até a API.\n\n#### Cobertura de Testes E2E (UI)\n\n**1. Autenticação**\n- ✅ `sign-in.cy.ts` - Login e navegação completa\n- ✅ `sign-up.cy.ts` - Cadastro de novo usuário\n\n**2. Fluxo Completo de Tarefas**\n- ✅ `create-task.cy.ts` - Criar tarefa via interface\n- ✅ `get-tasks.cy.ts` - Visualizar listagem de tarefas\n- ✅ `update-task.cy.ts` - Atualizar tarefa existente\n- ✅ `delete-task.cy.ts` - Deletar tarefa existente\n\n#### Execução dos Testes E2E\n\n```bash\ncd web\npnpm exec cypress run          # Modo headless\npnpm exec cypress open         # Modo interativo\n```\n\n---\n\n### 📊 Resumo da Automação\n\n| Tipo de Teste | Ferramenta | Quantidade | Status |\n|---------------|------------|------------|--------|\n| **API Automatizados** | Vitest + Supertest | 15 casos | ✅ 100% |\n| **UI E2E Automatizados** | Cypress | 6 casos | ✅ 100% |\n| **API Manuais** | Yaak | 7 evidências | ✅ Documentado |\n| **Total Automatizado** | - | **21 casos** | ✅ 100% |\n\n\u003e 💡 **Nota**: Todos os testes automatizados são executados automaticamente no pipeline de CI/CD (GitHub Actions) a cada push e pull request, garantindo a qualidade contínua do código.\n\n---\n\n## 8. TDD e CI/CD\n\n### 🔄 Test-Driven Development (TDD)\n\nO desenvolvimento foi realizado utilizando **TDD (Test-Driven Development)**, aplicado especialmente nas funcionalidades críticas de autenticação, validação de dados e operações CRUD de tarefas.\n\n---\n\n### 🚀 CI/CD (Continuous Integration/Continuous Deployment)\n\nO projeto utiliza **GitHub Actions** para automação de testes e validação de código em cada push e pull request.\n\n![Pipeline CI](.github/images/ci.png)\n\n### 🔄 Workflow do CI/CD\n\n1. **Checkout** do código do repositório\n2. **Setup** do ambiente (Node.js, pnpm)\n3. **Instalação** de dependências (`pnpm install`)\n4. **Validação** de lint e formatação (Biome)\n5. **Execução** de testes unitários e de integração\n6. **Geração** de relatório de cobertura\n7. **Publicação** de artefatos de teste\n\n### 🛡️ Gates de Qualidade\n\n- ❌ **PR bloqueado** se testes falharem\n- ❌ **PR bloqueado** se cobertura estiver abaixo de 80%\n- ❌ **PR bloqueado** se houver erros de lint\n- ✅ **Merge permitido** apenas com todos os checks passando\n\n### 📦 Pipeline de Deploy\n\n- **Staging:** Deploy automático após merge na branch `develop`\n- **Production:** Deploy manual após aprovação e testes em staging\n\n---\n\n## 9. Métricas e Relatório Final\n\n![Resultado dos testes da pipeline](.github/images/coverage.png)\n\n### 📋 Resumo Executivo\n\n| Métrica | Resultado |\n|---------|-----------|\n| **Cobertura de Requisitos** | ✅ 100% (7/7 requisitos) |\n| **Taxa de Aprovação** | ✅ 100% (28/28 casos executados) |\n| **Testes Automatizados** | ✅ 21 casos (Vitest + Cypress) |\n| **Testes Manuais** | ✅ 7 casos (validação visual) |\n| **Cobertura de Código** | ✅ 85%+ |\n| **Defeitos Encontrados** | 1 (severidade baixa) |\n| **Tempo de Correção** | ~1 hora |\n| **Status Geral** | ✅ Aprovado para produção |\n\n### 📊 Cobertura de Requisitos\n\nTodos os requisitos funcionais foram testados e validados:\n\n| Requisito | Casos de Teste | Status |\n|-----------|----------------|--------|\n| R1 - Login válido | CT-01, CT-04 | ✅ Completo |\n| R2 - Login inválido / Autenticação | CT-02, CT-05, CT-06, CT-07 | ✅ Completo |\n| R3 - Criar tarefa | CT-08, CT-09, CT-10 | ✅ Completo |\n| R4 - Listar tarefas | CT-11, CT-12, CT-13 | ✅ Completo |\n| R5 - Atualizar tarefa | CT-14, CT-15, CT-16, CT-17 | ✅ Completo |\n| R6 - Deletar tarefa | CT-18, CT-19, CT-20, CT-21 | ✅ Completo |\n| R7 - Cadastro de usuário | CT-03 | ✅ Completo |\n\n### 📈 Resultados dos Testes\n\n#### Taxa de Aprovação por Ciclo\n\n| Ciclo | Casos Executados | Casos Aprovados | Taxa |\n|-------|------------------|-----------------|------|\n| Ciclo 1 (Inicial) | 28 (21 auto + 7 manual) | 28 | 100% |\n| Ciclo 2 (Regressão) | 28 (21 auto + 7 manual) | 28 | 100% |\n| **Total** | **28** | **28** | **100%** |\n\n#### Métricas de Qualidade de Código\n\n| Métrica | Valor | Status |\n|---------|-------|--------|\n| Cobertura de Testes | 85%+ | ✅ |\n| Taxa de Sucesso | 100% | ✅ |\n| Tempo de Execução | \u003c 30s | ✅ |\n| Linting | Sem erros | ✅ |\n| Formatação | 100% conforme | ✅ |\n\n#### Métricas de Performance\n\n| Métrica | Valor | Status |\n|---------|-------|--------|\n| Tempo de Resposta da API | \u003c 200ms | ✅ |\n| Tempo de Carregamento da UI | \u003c 2s | ✅ |\n| Taxa de Sucesso de Requisições | 99.8% | ✅ |\n\n### 🐛 Análise de Defeitos\n\n#### Resumo\n\n- **Total de Defeitos:** 1\n- **Densidade:** 0,036 defeitos/caso de teste (1 defeito / 28 casos)\n- **Severidade:** Baixa\n- **Status:** ✅ Todos corrigidos\n\n#### Distribuição por Severidade\n\n| Severidade | Quantidade |\n|------------|------------|\n| Críticos | 0 |\n| Altos | 0 |\n| Médios | 0 |\n| Baixos | 1 |\n\n#### Detalhamento do Defeito\n\n| Bug ID | Descrição | Severidade | Tempo de Correção | Status |\n|--------|-----------|------------|-------------------|--------|\n| BUG-001 | Tratamento de erros no error handler do backend | Baixa | ~1h | ✅ Corrigido |\n\n\u003e 💡 **Observação:** O defeito identificado foi corrigido durante o desenvolvimento e não impactou os casos de teste funcionais.\n\n## 10. Guia de Nomenclatura\n\nEste guia padroniza a nomenclatura de IDs utilizados em todo o projeto para facilitar rastreabilidade e organização.\n\n### 📝 Casos de Teste\n- **Formato:** `CT-XXX`\n- **Exemplo:** `CT-01` = Caso de Teste 1 (Login válido)\n- **Uso:** Identificar casos de teste em planilhas, relatórios e documentação\n\n### 🖼️ Evidências\n- **Imagens:** `IMG-XXX` (ex: `IMG-010`)\n- **Vídeos:** `VID-XXX` (ex: `VID-015`)\n- **Falhas:** `IMG-XXX-F` ou `VID-XXX-F` (ex: `IMG-009-F`)\n- **Regra:** A evidência deve usar o mesmo ID do caso de teste correspondente quando possível\n\n### 🐛 Bugs/Defeitos\n- **Formato:** `BUG-XXX` (ex: `BUG-001`)\n- **Uso:** Identificar defeitos em issues do GitHub e relatórios\n\n### 📋 Requisitos\n- **Formato:** `R-XXX` ou `REQ-XXX` (ex: `R1`, `REQ-003`)\n- **Uso:** Referenciar requisitos funcionais e não funcionais\n\n### 📊 Relatórios\n- **Execução:** `REL-EXEC-vX.X.xlsx`\n- **Defeitos:** `REL-BUGS-vX.X.xlsx`\n- **Final:** `REL-FINAL-vX.X.pdf`\n\n### 🔗 Exemplo de Rastreabilidade Completa\n\n```\nREQ-003 (Criar tarefa)\n  ↓\nCT-04 (Criar tarefa - Caso de Teste)\n  ↓\nIMG-004 (Evidência de sucesso)\n  ↓\nBUG-001 (Defeito relacionado - se houver)\n  ↓\nREL-EXEC-v1.0.xlsx (Relatório de execução)\n```\n\n### 📌 Convenções Adicionais\n\n- **Ambientes:** `local`, `staging`, `production`\n- **Versões:** `v1.0.0`, `v1.1.0` (semantic versioning)\n- **Branches:** `feature/`, `bugfix/`, `hotfix/`\n- **Commits:** Prefixos: `test:`, `fix:`, `feat:`, `docs:`\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Desenvolvido com ❤️ usando as melhores práticas de desenvolvimento**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonkaiti%2Ftasks-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandersonkaiti%2Ftasks-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandersonkaiti%2Ftasks-plus/lists"}