DEV Community

Paula Milani
Paula Milani

Posted on

[PT-BR] Page Model com TestCafé

O que é Page Model?
Basicamente é organizar e separar o código em pages. Os métodos definidos no modelo de página ficará disponível em qualquer lugar.

Por que usar Page Model?
Fornecer uma separação clara das camadas de UI e lógica, reaproveitamento de código, organização do projeto de automação e flexibilidade para as equipes.

Vamos no código entender melhor o Page Model.
Dentro do projeto criamos uma página de teste, onde nela colocamos todo código de interface. Ou seja, os elementos html mapeados + o método de ação com esses elementos.

import {t, Selector } from 'testcafe';

class Page {
    constructor () {
        this.nameInput      = Selector('#username');
        this.passwordInput  = Selector('#password');
        this.submitButton   = Selector('button').withText('Login');
    }

    async typeName(name) {
        await t.typeText(this.nameInput, name);
    }
    async typePassword(password){
        await t.typeText(this.passwordInput, password);
    }

    async clickSubmit() {
        await t.click(this.submitButton);
    }

}

export default new Page();
Enter fullscreen mode Exit fullscreen mode

Então criamos nosso arquivo de teste onde os métodos criados na page são utilizados na lógica dos cenários de teste.

import page from '../page/pageLogin'

fixture `Use a Page Model`
    .page`http://the-internet.herokuapp.com/login`;


test('Sucess Login', async () => {

    await page.typeName('tomsmith');
    await page.typePassword('uperSecretPassword!')
    await page.clickSubmit();

});
Enter fullscreen mode Exit fullscreen mode

Sendo assim, podemos descrever diversos cenários, uma vez que ocorra mudança em algum elemento html ou até mesmo na massa de dados, o local de alteração passa a ser único e a mudança reflete em todas os cenários que utilizam daquela informação.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay