Contenido del curso
Introducción a la Automatización WEB
Introducción a Puppeteer
Conociendo Puppeteer
Conclusión del curso
Hooks
Contenido del curso
Hooks
Juan David Rojas Restrepo
EstudianteOscar David Castro Beltran
EstudianteAgustin Cammarota Muti
EstudianteJesus Cuadro
EstudianteAlejandro Yung
EstudianteJavier Fuentes Mora
ProfesorMario Alexander Vargas Celis
EstudianteDiego Alexander Fino Ariza
EstudianteMi 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() })
Hola, mi duda es si describe, it, y los hook son de JS o es algo que funciona sólo con jest ?
son de jest
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)