|
1 | 1 | # Page Object Model (POM) Pattern |
2 | 2 |
|
3 | | -Este projeto é uma suíte de testes automatizados utilizando [Playwright](https://playwright.dev/) para validar fluxos de autenticação e cadastro em uma aplicação web. O projeto adota o padrão **Page Object Model (POM)** para organizar e simplificar a interação com as páginas, tornando os testes mais legíveis, reutilizáveis e de fácil manutenção. |
| 3 | +This project is an automated test suite using [Playwright](https://playwright.dev/) to validate authentication and registration flows in a web application. The project adopts the **Page Object Model (POM)** pattern to organize and simplify page interactions, making tests more readable, reusable, and easy to maintain. |
4 | 4 |
|
5 | | -## Contexto |
| 5 | +## Context |
6 | 6 |
|
7 | | -O objetivo deste repositório é demonstrar como estruturar testes automatizados de ponta a ponta (E2E) utilizando o padrão de projeto **Page Object Model**. Esse padrão encapsula operações e elementos de cada página em classes específicas, expondo métodos de alto nível para os testes, sem que eles precisem conhecer detalhes de implementação dos elementos da interface. |
| 7 | +The purpose of this repository is to demonstrate how to structure end-to-end (E2E) automated tests using the **Page Object Model** design pattern. This pattern encapsulates operations and elements of each page in specific classes, exposing high-level methods for the tests, so they do not need to know implementation details of the UI elements. |
8 | 8 |
|
9 | | -## Sobre o Page Object Model |
| 9 | +## About the Page Object Model |
10 | 10 |
|
11 | | -O **Page Object Model (POM)** é um padrão de design que promove a criação de classes para cada página da aplicação, centralizando os seletores e ações em um único local. Isso facilita a manutenção dos testes, pois mudanças na interface exigem alterações apenas nos objetos de página correspondentes. |
| 11 | +The **Page Object Model (POM)** is a design pattern that promotes the creation of classes for each application page, centralizing selectors and actions in a single location. This makes test maintenance easier, as UI changes require updates only in the corresponding page objects. |
12 | 12 |
|
13 | | -**Exemplo:** |
| 13 | +**Example:** |
14 | 14 | ```typescript |
15 | 15 | const loginPage = new LoginPage(page); |
16 | 16 | await loginPage.login("email@teste.com", "senha"); |
17 | 17 | ``` |
18 | 18 |
|
19 | | -## Estrutura do Projeto |
| 19 | +## Project Structure |
20 | 20 |
|
21 | | -- `ui/pages/`: Page Objects com os elementos e ações de cada página. |
22 | | -- `tests/`: Arquivos de teste automatizados. |
23 | | -- `playwright.config.ts`: Configuração do Playwright (incluindo baseURL). |
| 21 | +- `ui/pages/`: Page Objects with elements and actions for each page. |
| 22 | +- `tests/`: Automated test files. |
| 23 | +- `playwright.config.ts`: Playwright configuration (including baseURL). |
24 | 24 |
|
25 | | -## Comandos Essenciais |
| 25 | +## Essential Commands |
26 | 26 |
|
27 | | -- **Executar todos os testes:** |
| 27 | +- **Run all tests:** |
28 | 28 | ``` |
29 | 29 | npx playwright test |
30 | 30 | ``` |
31 | 31 |
|
32 | | -- **Executar testes em modo UI interativo:** |
| 32 | +- **Run tests in interactive UI mode:** |
33 | 33 | ``` |
34 | 34 | npx playwright test --ui |
35 | 35 | ``` |
36 | 36 |
|
37 | | -- **Executar testes em um navegador específico:** |
| 37 | +- **Run tests in a specific browser:** |
38 | 38 | ``` |
39 | 39 | npx playwright test --project=chromium |
40 | 40 | ``` |
41 | 41 |
|
42 | | -- **Executar um arquivo de teste específico:** |
| 42 | +- **Run a specific test file:** |
43 | 43 | ``` |
44 | 44 | npx playwright test tests/login.test.ts |
45 | 45 | ``` |
46 | 46 |
|
47 | | -- **Executar em modo debug:** |
| 47 | +- **Run in debug mode:** |
48 | 48 | ``` |
49 | 49 | npx playwright test --debug |
50 | 50 | ``` |
51 | 51 |
|
52 | | -- **Gerar testes automaticamente com Codegen:** |
| 52 | +- **Generate tests automatically with Codegen:** |
53 | 53 | ``` |
54 | 54 | npx playwright codegen |
55 | 55 | ``` |
56 | 56 |
|
57 | | -## Requisitos |
| 57 | +## Requirements |
58 | 58 |
|
59 | | -- Node.js instalado |
60 | | -- Dependências instaladas com: |
| 59 | +- Node at least v18 installed |
| 60 | +- Dependencies installed with: |
61 | 61 | ``` |
62 | | - npm install |
| 62 | + npm run setup |
63 | 63 | ``` |
64 | 64 |
|
65 | | -## Observações |
| 65 | +## Notes |
66 | 66 |
|
67 | | -- O projeto utiliza `baseURL` configurado no `playwright.config.ts`, permitindo o uso de caminhos relativos nos testes. |
68 | | -- Como a aplicação de exemplo não possui banco de dados persistente, os dados criados existem apenas durante a sessão. |
| 67 | +- The project uses `baseURL` configured in `playwright.config.ts`, allowing the use of relative paths in tests. |
| 68 | +- As the sample application does not have a persistent database, created data exists only during the session. |
0 commit comments