Skip to content

Commit

Permalink
Merge pull request #6 from Quest-Finder/validation-objects-perfilpage
Browse files Browse the repository at this point in the history
Atualização da PATH, novos objetos e organização de testes
  • Loading branch information
brunomachadors authored May 25, 2024
2 parents 41aa883 + 73336a8 commit 3125fa9
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 10 deletions.
78 changes: 71 additions & 7 deletions pages/perfil.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,22 @@ exports.PerfilPage = class PerfilPage {
}

async clicarExtenderBio() {
const extenderBioButton = "//button[contains(.,'Ver mais')]";
await this.page.click(extenderBioButton);
const extenderBioButton = { role: 'button', name: 'Ver mais' };
await this.page
.getByRole(extenderBioButton.role, { name: extenderBioButton.name })
.click();
}

async clicarReduzirBio() {
const reduzirBioButton = "//button[contains(.,'Ver menos')]";
await this.page.click(reduzirBioButton);
const extenderBioButton = { role: 'button', name: 'Ver menos' };
await this.page
.getByRole(extenderBioButton.role, { name: extenderBioButton.name })
.click();
}

async validarTextoBio(bio) {
await expect(this.page.getByText(bio)).toBeVisible();
await expect(this.page.getByText(bio)).toHaveText(bio);
}

async validarTitulo() {
Expand All @@ -28,8 +37,63 @@ exports.PerfilPage = class PerfilPage {
const estilosPreferidos = "(//h1[contains(.,'Estilos preferidos')])[1]";
await expect(this.page.locator(estilosPreferidos)).toBeVisible();
}
async validarConquistas() {
const conquistas = "(//h1[contains(.,'Conquistas')])[1]";
await expect(this.page.locator(conquistas)).toBeVisible();
async validarTituloConquistas() {
const conquistas = { role: 'heading', name: 'Conquistas' };
await expect(
this.page.getByRole(conquistas.role, { name: conquistas.name })
).toBeVisible();
}

async validarInsigniasRecebidas(conquistas) {
conquistas.forEach(async (insignia) => {
const localizador = "//p[contains(.,'" + insignia + "')]";
await expect(this.page.locator(localizador)).toBeVisible();
await expect(this.page.locator(localizador)).toHaveText(insignia);
console.log(insignia);
});
}

async validarNome(nome) {
const nomeUsuario = "//h2[contains(.,'Lucas Marcelo')]";
await expect(this.page.locator(nomeUsuario)).toBeVisible();
await expect(this.page.locator(nomeUsuario)).toHaveText(nome);
}

async validarPronome() {
const pronomeUsuario = "//h2[contains(.,'(Ele - Dele)')]";
await expect(this.page.locator(pronomeUsuario)).toBeVisible();
}

async validarUsername() {
const username = "//h2[contains(.,'@mestremarcelo')]";
await expect(this.page.locator(username)).toBeVisible();
}

async validarUserTitle() {
const userTitle =
"//h2[contains(.,'Mestre D&D com 15 anos de experiência')]";
await expect(this.page.locator(userTitle)).toBeVisible();
}

async validarLocalResidencia(cidade, pais) {
const residencia = `${cidade} | ${pais}`;
const localResidencia = { role: 'heading', name: residencia };
await expect(
this.page.getByRole(localResidencia.role, { name: localResidencia.name })
).toBeVisible();
await expect(
this.page.getByRole(localResidencia.role, { name: localResidencia.name })
).toHaveText(residencia);
}

async validarIdade(idade) {
const idadeUsuario = { role: 'heading', name: `${idade} anos` };
const idadeUser = `${idade} anos`;
await expect(
this.page.getByRole(idadeUsuario.role, { name: idadeUsuario.name })
).toBeVisible();
await expect(
this.page.getByRole(idadeUsuario.role, { name: idadeUsuario.name })
).toHaveText(idadeUser);
}
};
32 changes: 30 additions & 2 deletions tests/perfil.spec.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,40 @@
const { test } = require('@playwright/test');
import { PerfilPage } from '../pages/perfil.js';
import { CONQUISTAS, PERFIL } from '../utils/constants.js';

test('Acessar perfil', async ({ page }) => {
const perfilPage = new PerfilPage(page);
await perfilPage.goto();
await perfilPage.validarTitulo();
});

test('Validar dados do usuário', async ({ page }) => {
const perfilPage = new PerfilPage(page);
await perfilPage.goto();
await perfilPage.validarNome(PERFIL.jogador.nome);
await perfilPage.validarPronome();
await perfilPage.validarUsername();
await perfilPage.validarUserTitle();
await perfilPage.validarLocalResidencia(
PERFIL.jogador.cidade,
PERFIL.jogador.pais
);
await perfilPage.validarIdade(PERFIL.jogador.idade);
});

test('Validar Estilos de jogo e Conquistas', async ({ page }) => {
const perfilPage = new PerfilPage(page);
const conquistas = [CONQUISTAS.reiDasRolagens, CONQUISTAS.mestreRaiz];
await perfilPage.goto();
await perfilPage.validarEstilosPreferidos();
await perfilPage.validarTituloConquistas();
await perfilPage.validarInsigniasRecebidas(conquistas);
});

test('Validar Bio', async ({ page }) => {
const perfilPage = new PerfilPage(page);
await perfilPage.goto();
await perfilPage.clicarExtenderBio();
await perfilPage.clicarReduzirBio();
await perfilPage.validarEstilosPreferidos();
await perfilPage.validarConquistas();
await perfilPage.validarTextoBio(PERFIL.jogador.bio);
});
40 changes: 39 additions & 1 deletion utils/constants.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,41 @@
export const PATH = {
perfil: '/user/profile?show=profile',
perfil: '/user/profile',
};

export const ESTILOS_PREFERIDOS = {
fantasiaHeroica: 'Fantasia heroica',
ninjaVsSamurai: 'Ninja vs Samurai',
espadaEFeiticaria: 'Espada e feitiçaria',
fantasiaEpica: 'Fantasia épica',
fantasiaMitica: 'Fantasia mítica',
fantasiaSombria: 'Fantasia sombria',
intriga: 'Intriga',
misterio: 'Mistério',
guerra: 'Guerra',
naveMae: 'Nave Mãe',
};

export const CONQUISTAS = {
reiDasRolagens: 'Rei das rolagens',
mestreRaiz: 'Mestre raiz',
};

export const PERFIL = {
jogador: {
nome: 'Lucas Marcelo',
pronome: 'Ele-Dele',
username: '@mestremarcelo',
titulo: 'Mestre D&D com 15 anos de experiência',
cidade: 'São Paulo',
pais: 'Brasil',
idade: 35,
estilosPreferidos: [
ESTILOS_PREFERIDOS.fantasiaHeroica,
ESTILOS_PREFERIDOS.ninjaVsSamurai,
ESTILOS_PREFERIDOS.espadaEFeiticaria,
],
conquistas: [CONQUISTAS.reiDasRolagens, CONQUISTAS.mestreRaiz],
bio: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Accusantiumearum perferendis asperiores itaque culpa ratione nihil optio,temporibus omnis doloremque dolor consequuntur, accusamus suscipitlabore quisquam, eum laudantium dolorum explicate.e dolor consequuntur, accusamus suscipitlabore quisquam, temporibus omnis doloremque dolor consequuntur, accusamus suscipitlabore quisquam, eum laudantium dolorum explicate.e dolor consequuntur, accusamus suscipitlabore quisquam',
},
mestre: {},
};

0 comments on commit 3125fa9

Please sign in to comment.