CursosEmpresasBlogLiveConfPrecios

Hacer un E2E

Clase 16 de 24 • Curso Avanzado de Automatización de Pruebas con Puppeteer

Clase anteriorSiguiente clase

Contenido del curso

Para quién es este curso?
  • 1
    ¿Para quién es este curso?

    ¿Para quién es este curso?

    04:07
Conceptos Avanzados
  • 2
    Emulación de dispositivos

    Emulación de dispositivos

    14:26
  • 3
    Modo incógnito del navegador

    Modo incógnito del navegador

    03:35
  • 4
    Creando helpers de utilidad

    Creando helpers de utilidad

    18:49
  • 5
    Capturas de pantalla

    Capturas de pantalla

    11:31
  • 6
    Visual Testing

    Visual Testing

    20:46
  • 7
    Generando PDFs

    Generando PDFs

    12:12
  • 8
    Geolocalización

    Geolocalización

    07:09
  • 9
    Probando accesibilidad

    Probando accesibilidad

    11:42
  • 10
    Puppeteer con Firefox

    Puppeteer con Firefox

    09:10
  • 11
    Medir performance: page load

    Medir performance: page load

    18:36
  • 12
    Medir performance: first contentful paint

    Medir performance: first contentful paint

    11:22
Creando nuestro propio framework
  • 13
    Inicializando nuestro framework

    Inicializando nuestro framework

    14:19
  • 14
    Creando la Base Page

    Creando la Base Page

    09:44
  • 15
    Page Object Model

    Page Object Model

    23:05
  • 16
    Hacer un E2E

    Hacer un E2E

    37:52
  • 17
    Agregar reporte

    Agregar reporte

    05:14
BDD
  • 18
    BDD y Gherkin

    BDD y Gherkin

    09:39
  • 19
    Configurando codeceptjs con Gherkin y BDD

    Configurando codeceptjs con Gherkin y BDD

    08:01
  • 20
    Creando una Prueba con Gherkin

    Creando una Prueba con Gherkin

    17:21
  • 21
    Creando un Scenario Outline

    Creando un Scenario Outline

    14:13
  • 22
    Generando reporte y agregando imágenes al reporte

    Generando reporte y agregando imágenes al reporte

    15:32
CI/CD
  • 23
    Configurando Jenkins con nuestras pruebas y creando reportes

    Configurando Jenkins con nuestras pruebas y creando reportes

    16:33
Conclusion del curso
  • 24
    Sigue aprendiendo

    Sigue aprendiendo

    02:07
    Hernan Camilo Jimenez Garcia

    Hernan Camilo Jimenez Garcia

    student•
    hace 4 años

    Me puse a buscar los selectores por mi cuenta y di con estos:

    this.inputs = { from: "//input[@name='from' and @id='autocomplete']", to: "//input[@name='to' and @id='autocomplete2']", date: "//input[@class='depart form-control' and @id='departure']", passenger: "//a[@class='dropdown-toggle dropdown- btn waves-effect' and @role='button']", search: "//button[@id='flights-search']", firstOption: ".autocomplete-result[data-index='0']", moreAdultsPassengers: "(//i[@class='la la-plus'])[1]" }
    Randy Guerra

    Randy Guerra

    student•
    hace 3 años

    Esta clase, requiere mucha atencion.

    Irving Juárez

    Irving Juárez

    student•
    hace 3 años

    Ya entendi lo de usar clases para mejorar la manera de hacer tests, se usa mucho un paradigma similar a los componentes, pero en lugar de componentes, son clases (que representan componentes, paginas, containers, etc). . La pregunta es, ¿Cómo se separan estas clases de testing con los componentes reales de la aplicacion en terminos de organizacion de archivos? . Mi primera idea es que se crea una carpeta tests/ y ahi se meten pages, components, etc... Pero me gustaria saber como lo hacen en sus empresas

      Javier Fuentes Mora

      Javier Fuentes Mora

      teacher•
      hace 3 años

      si normalmente se tiene una carpeta de pages donde se agregan todas las que se tienen, y hay algo llamado PageFragments para cuando son cosas como Modales o cosas que se comparten entre paginas , seria lo mas parecido a componentes

    Miguel Angel Junior Rodriguez Valda

    Miguel Angel Junior Rodriguez Valda

    student•
    hace 2 años

    Muy buenas, desarrolle un framework siguiendo este curso, y funcionaba perfectamente hasta ayer que presento el siguiente error:

    FAIL __tests__/chat.test.js (100.805 s) ● Chat Tests › Verify input and basic options to send messages thrown: "Internal Error - Null scene reference" at _getError (node_modules/jest-circus/build/utils.js:432:18) at Array.map (<anonymous>) ``` Este error esta ocacionando fallas en todas las pruebas, ya revise las versiones de los paquetes npm y actualice a las versiones mas actuales y aun asi sigue fallando, antes no daba este error y en estos dias comenzo a fallar el framework siempre en este error? Alguien sabe como puedo solucionarlo?
    Gustavo Cortes

    Gustavo Cortes

    student•
    hace un año

    Como se hace para buscar en la consola de chrome ?

      Giselle Katherin Castillo Ariza

      Giselle Katherin Castillo Ariza

      student•
      hace un año

      te paras en la consola y con ctrl+f

    David steven Abril Pulecio

    David steven Abril Pulecio

    student•
    hace un año
    import BasePage from "./BasePage"; export default class LoginPage extends BasePage { constructor() { super(); // Pass the page instance to the BasePage constructor, its necesary when heredando clases de otros archivos this.mainDiv = '#flights-search' this.inputs = { typeFromInputField: '#fadein > span > span > span.select2-search.select2-search--dropdown > input', ClickFromInputField: '#onereturn > div:nth-child(1) > div.input-items.from_flights > div.form-floating > span > span.selection', typeToInputField: '#fadein > span > span > span.select2-search.select2-search--dropdown > input', ClickToInputField: '#onereturn > div:nth-child(2) > div.input-items.flights_arrival.to_flights > div.form-floating > span > span.selection', date: '#departure', passengers: '#onereturn > div.col-lg-2 > div > div > div > a', search: '#onereturn > div:nth-child(5) > button', FirstOption: '#select2--results > li', moreAdultsPassengers: '#onereturn > div.col-lg-2 > div > div > div > div > div.dropdown-item.adult_qty > div > div > div.qtyInc', } } async validatePage() { console.log("Starting page validation..."); try { await page.waitForSelector(this.mainDiv) await page.waitForSelector(this.inputs.date) await page.waitForSelector(this.inputs.passengers) await page.waitForSelector(this.inputs.search) } catch (e) { console.log("Error in page validation:", e.message); throw new Error(`Page validation failed: ${e.message}`); } } async FlightSelection(from, to, date, passengerAmount) { console.log(` ${from} ${to} ${date} ${passengerAmount}`); // await page.focus(this.inputs.from); // Focus the input explicitly console.log("Select From city"); // Step 1: Select "From" city await this.click(this.inputs.ClickFromInputField) // Open dropdown await this.type(this.inputs.typeFromInputField, from) // Type city name await page.waitForSelector(this.inputs.FirstOption) //Ensure the first option appears await this.click(this.inputs.FirstOption) // Click the first option console.log("Select To city"); // Step 2: Select "To" city await this.click(this.inputs.ClickToInputField) // Open dropdown await this.type(this.inputs.typeToInputField, to) // Type destination city name await page.waitForSelector(this.inputs.typeToInputField) // Wait for the first option to appear await this.click(this.inputs.FirstOption) // Click on the first option // Step 3: Select the flight date await this.tripleClick(this.inputs.date) await this.type(this.inputs.date, date) // Step 4: Handle passengers if more than 1 if (passengerAmount !== 1) { await this.click(this.inputs.passengers) await page.waitForSelector(this.inputs.moreAdultsPassengers) //Awaits for the dropdown to appear for(let i = 0; i< passengerAmount -1; i++){ await this.click(this.inputs.moreAdultsPassengers) } } await this.click(this.inputs.search) } // Step 5: Search for the flight async validateFlights() { await this.wait(30) } } ```import BasePage from "./BasePage"; export default class LoginPage extends BasePage {    constructor() {                super(); // Pass the page instance to the BasePage constructor, its necesary when heredando clases de otros archivos        this.mainDiv = '#flights-search'        this.inputs = {            typeFromInputField: '#fadein > span > span > span.select2-search.select2-search--dropdown > input',           ClickFromInputField: '#onereturn > div:nth-child(1) > div.input-items.from\_flights > div.form-floating > span > span.selection',            typeToInputField: '#fadein > span > span > span.select2-search.select2-search--dropdown > input',            ClickToInputField: '#onereturn > div:nth-child(2) > div.input-items.flights\_arrival.to\_flights > div.form-floating > span > span.selection',            date: '#departure',            passengers: '#onereturn > div.col-lg-2 > div > div > div > a',            search: '#onereturn > div:nth-child(5) > button',            FirstOption: '#select2--results > li',            moreAdultsPassengers: '#onereturn > div.col-lg-2 > div > div > div > div > div.dropdown-item.adult\_qty > div > div > div.qtyInc',         }    }   async validatePage() {    console.log("Starting page validation...");    try {        await page.waitForSelector(this.mainDiv)    await page.waitForSelector(this.inputs.date)    await page.waitForSelector(this.inputs.passengers)    await page.waitForSelector(this.inputs.search)      } catch (e) {        console.log("Error in page validation:", e.message);        throw new Error(`Page validation failed: ${e.message}`);    }  }   async FlightSelection(from, to, date, passengerAmount) {    console.log(` ${from} ${to} ${date} ${passengerAmount}`);  //  await page.focus(this.inputs.from); // Focus the input explicitly  console.log("Select From city");    // Step 1: Select "From" city    await this.click(this.inputs.ClickFromInputField)            // Open dropdown    await this.type(this.inputs.typeFromInputField, from)       // Type city name    await page.waitForSelector(this.inputs.FirstOption)         //Ensure the first option appears    await this.click(this.inputs.FirstOption)                  // Click the first option                         console.log("Select To city");      // Step 2: Select "To" city    await this.click(this.inputs.ClickToInputField)             // Open dropdown    await this.type(this.inputs.typeToInputField, to)           // Type destination city name    await page.waitForSelector(this.inputs.typeToInputField)    // Wait for the first option to appear    await this.click(this.inputs.FirstOption)                    // Click on the first option     // Step 3: Select the flight date    await this.tripleClick(this.inputs.date)    await this.type(this.inputs.date, date)     // Step 4: Handle passengers if more than 1    if (passengerAmount !== 1) {      await this.click(this.inputs.passengers)      await page.waitForSelector(this.inputs.moreAdultsPassengers) //Awaits for the dropdown to appear      for(let i = 0; i< passengerAmount -1; i++){        await this.click(this.inputs.moreAdultsPassengers)       }    }     await this.click(this.inputs.search)  }    // Step 5: Search for the flight  async validateFlights() {     await this.wait(30)  } }

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads