No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Hooks

14/15
Recursos

Aportes 6

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Mi reacción 🤯 al ver todo el tiempo de prueba y de código que se reduce con la implementación de los hooks.

Actualmente beforeEach, beforeAll, afterEach y afterAll no están funcionando :(

Aporte de codigo:

const puppeteer = require('puppeteer');

describe('Time outs', () => {
  let browser;
  let page;

  beforeAll(async () => {
    jest.setTimeout(1000);
    browser = await puppeteer.launch({
      headless: false,
      defaultViewport: null
    });
  });

  afterEach(async () => {
    page = '';
    await browser.close();
  });

  beforeEach(async () => {
    page = await browser.newPage();
    page.setDefaultTimeout(10000);
    page.setDefaultNavigationTimeout(10000);
    await page.goto('https://platzi.com/', {
      waitUntil: 'networkidle2'
    });
  });

  test('should selector',  async () => {
    const selector = await page.waitForSelector('#cms-landings > section > section.Hero > div > p.Hero-content-message');
    const validate = await page.evaluate((selector) => selector.innerText, selector);
    expect(validate).toBe('¿Qué quieres lograr?');
  });
});

Resumen de la clase 😃

let browser
let page

// Antes de cada test

beforeEach(async() => {
    browser = await puppeteer.launch({
        headless: false,
        defaultViewport: null,
    })

    page = await browser.newPage()

})

// Despues de cada test

afterEach(async()=>{

    await browser.close()

})

// Antes de todos los tests

beforeAll(async() => {
    browser = await puppeteer.launch({
        headless: false,
        defaultViewport: null,
    })

    page = await browser.newPage()

})

// Despues de todos los tests

afterAll(async()=>{

    await browser.close()

})
```js const puppeteer = require("puppeteer") describe("Extrayendo informacion",()=>{ let browser let page beforeAll(async()=>{ //beforeAll lo inicia antes de las pruebas y beforeEach lo abre en cada prueba browser = await puppeteer.launch({ headless:false, defaultViewport: null, //slowMo: 500 }); page = await browser.newPage(); await page.goto("https://platzi.com", {waitUntil: "networkidle2"}); }); afterAll(async ()=>{ //afterAll lo cierra despuesde las pruebas yafterEach lo ciarra al terminar cada prueba await browser.close(); }) it("Extraer el titulo de la pagina y url", async()=>{ const titulo = await page.title(); const url = await page.url(); console.log("titulo", titulo); console.log("url", url); //await new Promise((resolve) => setTimeout(resolve, 3000)); },35000); it("Extraer la información d eun elemento", async()=>{ await page.waitForSelector("body > main > header > div > nav > ul > li:nth-child(4) > a"); const nombreBoton = await page.$eval("body > main > header > div > nav > ul > li:nth-child(4) > a", (button) => button.textContent); const [button] = await page.$x("/html/body/main/section[1]/a/div/div[2]/div[2]/button"); const propiedad = await button.getProperty("textContent"); const texto = await propiedad.jsonValue(); //console.log("texto", texto); //Segunda Forma const texto2 = await page.evaluate((name)=>name.testContent, button); const button3 = await page.waitForXPath("/html/body/main/section[1]/a/div/div[2]/div[2]/button"); const texto3 = await page.evaluate((name)=>name.testContent, button3); console.log("texto3", texto3); },35000); it("Contar los elementos d euna pagina", async()=>{ const images = await page.$$eval("img",(imagenes) => imagenes.length); console.log("images", images) },35000); },50000); ```const puppeteer = require("puppeteer") describe("Extrayendo informacion",()=>{     let browser    let page     beforeAll(async()=>{ //beforeAll lo inicia antes de las pruebas y beforeEach lo abre en cada prueba        browser = await puppeteer.launch({            headless:false,            defaultViewport: null,             //slowMo: 500        });         page = await browser.newPage();        await page.goto("https://platzi.com", {waitUntil: "networkidle2"});    });     afterAll(async ()=>{ //afterAll lo cierra despuesde las pruebas yafterEach lo ciarra al terminar cada prueba        await browser.close();    })     it("Extraer el titulo de la pagina y url", async()=>{         const titulo = await page.title();        const url = await page.url();         console.log("titulo", titulo);        console.log("url", url);                 //await new Promise((resolve) => setTimeout(resolve, 3000));     },35000);     it("Extraer la información d eun elemento", async()=>{         await page.waitForSelector("body > main > header > div > nav > ul > li:nth-child(4) > a");         const nombreBoton = await page.$eval("body > main > header > div > nav > ul > li:nth-child(4) > a", (button) => button.textContent);         const \[button] = await page.$x("/html/body/main/section\[1]/a/div/div\[2]/div\[2]/button");        const propiedad = await button.getProperty("textContent");        const texto = await propiedad.jsonValue();         //console.log("texto", texto);         //Segunda Forma         const texto2 = await page.evaluate((name)=>name.testContent, button);         const button3 = await page.waitForXPath("/html/body/main/section\[1]/a/div/div\[2]/div\[2]/button");        const texto3 = await page.evaluate((name)=>name.testContent, button3);        console.log("texto3", texto3);     },35000);       it("Contar los elementos d euna pagina", async()=>{                const images = await page.$$eval("img",(imagenes) => imagenes.length);        console.log("images", images)     },35000); },50000);

Por algún motivo no me funcionaban los test, ya que aparecía el navegador muy rápido y estaba en blando
la solución que me funciono fue definirle un tiempo a beforeEach y afterEach
Espero les funcione

let browser
    let page 
    let globalTime = 10000
    beforeEach(async () => {
            browser = await puppeteer.launch({
            headless: false,
            slowMo: 0, 
            devtools: false,
            defaultViewport: null
            })
            page = await browser.newPage()
        
    }, globalTime)

    afterEach(async () => {
        await browser.close();
    }, globalTime)