Skip to content

Feature/testes triagem paciente#3

Open
btzolv wants to merge 9 commits intotest-setup-automacaofrom
feature/testes-triagem-paciente
Open

Feature/testes triagem paciente#3
btzolv wants to merge 9 commits intotest-setup-automacaofrom
feature/testes-triagem-paciente

Conversation

@btzolv
Copy link

@btzolv btzolv commented Nov 20, 2025

No description provided.

@btzolv btzolv requested a review from JessicaFortes November 20, 2025 19:55
@@ -0,0 +1,173 @@
export class TriagemPage {
elements = {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parabéns pela estrutura. O caminho está certo. 🙂
Mas podemos melhorar alguns pontos para deixar o código mais limpo e melhorar a manutenção e reuso.

Você está usando uma abordagem de page object baseada em page actions, significa que você está estruturando em um único arquivo tanto os seletores quanto os métodos que interagem com eles. Não há problema nisso, é um padrão comum, embora eu pessoalmente prefira separar em dois arquivos (elementos + ações) para deixar mais explícita a responsabilidade de cada parte. Vamos manter essa estrutura por agora e vamos focar em melhorar a organização.

1- separar elementos por etapa: tente separar os elementos por etapa criando mais de um objeto e mantendo apenas em elements o que é comum a todas as etapas ou a todas as telas.
ex:
const elements = {
tituloTriagem: () => cy.get('h1'),
btnAvancar: () => cy.get('[data-testid="btnAvancar"]'),
...
};
const seusDados: {
titulo: () => cy.contains("h2", "Seus Dados"),
inputNome: () => cy.get('[data-testid="input-nome"]'),
inputIdade: () => cy.get('[data-testid="input-idade"]'),
selectGenero: () => cy.get('[data-testid="select-genero"]'),
btnAvancar: () => cy.get('[data-testid="btn-avancar-seus-dados"]'),
}

2 - Vamos reutilizar corretamente: Mapear um elemento só faz sentido quando:

  • O seletor é estável
  • O elemento será usado várias vezes
  • E você realmente precisa chamá-lo em diferentes cenários ou ações.
    Se eu vou buscar um botão pelo texto apenas para clicar imediatamente, e isso acontece com vários botões diferentes, não faz sentido criar um mapeamento separado para cada um:
    cy.contains("button", "Salvar").click();
    cy.contains("button", "Finalizar").click();
    cy.contains("button", "Cancelar").click();
    Em vez de gerar código duplicado, podemos criar uma função para apenas executar a ação.
    Você pode criar uma genérica e sempre chamar ela quando precisar clicar em um botão pelo texto
    clickBotaoPorTexto = (texto: string) =>
    cy.contains("button", texto).click();

Ou pode criar uma função para cada botão
clicarEmCancelar = () =>
cy.contains("button", "Cancelar").click();

clicarEmSalvar = () =>
cy.contains("button", "Salvar").click();

Vamos iniciar com essa 2 melhorias que já vai mexer bastante no seu código e depois eu sugiro outras para as funções de ação.

cy.visit("/");
});

it("Acessar formulário de triagem", () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reutilizando as três próximas linhas, acredito que esse cenário não exista mais. Ter a tela carregada passa a ser um pré-requisito dos cenários.


it("Acessar formulário de triagem", () => {
cy.login(Cypress.env("paciente").email, Cypress.env("paciente").senha)
cy.url({ timeout: 20000 }).should("include", "/paciente");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse trecho aqui acho que podemos reutilizar. O que acha de tentar colocar no before?

it("Acessar formulário de triagem", () => {
cy.login(Cypress.env("paciente").email, Cypress.env("paciente").senha)
cy.url({ timeout: 20000 }).should("include", "/paciente");
triagemPage.clicarIniciartriagem();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse trecho aqui acho que podemos reutilizar. O que acha de tentar colocar no before?

cy.login(Cypress.env("paciente").email, Cypress.env("paciente").senha)
cy.url({ timeout: 20000 }).should("include", "/paciente");
triagemPage.clicarIniciartriagem();
triagemPage.validarPaginaTriagemCarregada();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse trecho aqui acho que podemos reutilizar. O que acha de tentar colocar no before?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Organize o arquivo eliminando as linhas em branco desnecessárias.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Organizar o arquivo removendo as linhas em branco desnecessárias.

inputNomeApoio: () => cy.get('#name'),
inputParentesco: () => cy.get('#kinship'),
inputTelefoneApoio: () => cy.get('#phone'),

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Organizar o arquivo removendo as linhas em branco desnecessárias.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Organizar o arquivo removendo as linhas em branco desnecessárias.

redeApoio: redeApoioElements
};

actions = new TriagemActions();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Foi instanciada um TriagemActions, mas ele não está sendo usado. Aparentemente o TriagemPage e o TriagemActions está fazendo as mesmas coisas, não sendo necessário o triagemActions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants