Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

17 Días
19 Hrs
51 Min
47 Seg

Información importante para resolver el reto

8/17

Lectura

Hola, llegó el momento de enfrentar tu primer reto. Pero antes un ⚠️ ANUNCIO IMPORTANTE ⚠️

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 15

Preguntas 0

Ordenar por:

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

Hice un tutorial de como hacer este reto, para que comparen soluciones y aprendamos de las contribuciones de cada quien:
SOLUCION AL RETO

Una solución o salida rápida que encontre para manejar la publicidad fue recargar la página con el comando page.reload(), esto nos lleva nuevamente a la pagina del home, por lo que se debe hacer click nuevamente al primer producto, por lo que esta vez nos lleva al producto, sin salir la publicidad.

Aupa!
He estado practicado con este reto y quiero compartiros mi propuesta.
Se agradecen sugerencias.

Saludos!

const SELECTED_PRODUCT = "Rs. 700";
const NUMBER_OFF_UNITS = "10";
test(`I add ${SELECTED_PRODUCT} "${SELECTED_PRODUCT}" model polo and proced to check out`, async ({ page }) => {

    await page.goto('https://automationexercise.com/');
   await page.mouse.wheel(0, 500);
   await page.locator("a[href='/products']").click();

    // This code evited the google ads page    
    if( page.url() === "https://automationexercise.com/#google_vignette"){
        await page.frameLocator('iframe[name="aswift_5"]').getByRole('button', { name: 'Close ad' }).click();
    }

    // Navigate to Polo section and choose 'Rs. 700' polo
    await page.locator("a[href='/brand_products/Polo']").click();

    let selectedProductWrapper = page.locator(`div.product-image-wrapper:has-text(' ${SELECTED_PRODUCT}')`);
    await selectedProductWrapper.hover();
    await selectedProductWrapper.locator(".choose a").click();

    // ADD 10 polo to the card
    await page.locator("#quantity").fill(NUMBER_OFF_UNITS);
    await page.locator("button.cart").click();
    await expect(page.locator(".modal-content")).toBeVisible();
    await expect(page.locator(".modal-title.w-100")).toHaveText("Added!");

    // Confirm the card
    await page.locator(".modal-content a").click();
    await expect(page.locator("tr#product-8 td.cart_quantity button")).toHaveText(NUMBER_OFF_UNITS);

    // Check out
    await page.locator("a.check_out").click();
    await expect(page.locator(".modal-content")).toBeVisible();
    await page.locator(".modal-content a").click();

}

Muy probablemente falle porque la página muestra publicidad, cuidado con eso 😬

![](https://static.platzi.com/media/user_upload/image-5a512d97-bc2e-4981-bec0-aa0e2cea683b.jpg) por aca dejo mi solucion practica, gracias
No agregué el de tamaño, ni el de cantidad de artículos por comprar import { test, expect } from '@playwright/test'; test('test', async ({ page }) => {        //Abrir el URL de la tienda virtual    await page.goto('https://automationexercise.com/category\_products'); //Deslizar hasta ver los productos    await page.mouse.wheel(0,550); //Haz clicl en "Ver más detalles"    await page.locator('\[class="fa fa-plus-square"]').nth(0);     await page.goto('https://automationexercise.com/product\_details/1'); //Haz click en Añadir al carrito await page.getByRole('button',{ name:'Add to car'}).click(); //verificar que se abra el modalawait expect(page.locator('\[class="modal-dialog modal-confirm"]')).toBeVisible; //Haz click en el botón de "Continue Shopping" await page.locator('.close-modal').click(); //Verificar que el modal ya no esté visible await expect(page.locator('\[class="modal-dialog modal-confirm"]')).not.toBeVisible;})
Ya en 2024 este es mi codigo import { test, expect } from '@playwright/test'; test("palying with assertions", async ({ page }) => {  await page.goto('https://automationexercise.com/');await page.mouse.wheel(0,550);await page.locator('\[class="fa fa-plus-square"]').nth(0).click()await page.locator('#quantity').fill('3');await page.getByText('Add to cart').click();await expect(page.locator('\[class="modal-title w-100"]')).toContainText('Added!')await page.locator('\[class="btn btn-success close-modal btn-block"]').click()await expect(page.locator('\[class="modal-content"]')).toBeHidden()await page.locator('\[class="fa fa-home"]').click()await page.mouse.wheel(0,550);await page.locator('\[class="product-image-wrapper"]').nth(0).click();const productElement = page.locator('\[data-product-id="1"]');await productElement.nth(0).click()await page.locator('\[class="btn btn-success close-modal btn-block"]').click()await page.locator('\[class="product-image-wrapper"]').nth(1).click();const productElement2 = page.locator('\[data-product-id="2"]');await productElement2.nth(1).click()await page.locator('\[class="btn btn-success close-modal btn-block"]').click()}); ```js import { test, expect } from '@playwright/test'; test("palying with assertions", async ({ page }) => { await page.goto('https://automationexercise.com/'); await page.mouse.wheel(0,550); await page.locator('[class="fa fa-plus-square"]').nth(0).click() await page.locator('#quantity').fill('3'); await page.getByText('Add to cart').click(); await expect(page.locator('[class="modal-title w-100"]')).toContainText('Added!') await page.locator('[class="btn btn-success close-modal btn-block"]').click() await expect(page.locator('[class="modal-content"]')).toBeHidden() await page.locator('[class="fa fa-home"]').click() await page.mouse.wheel(0,550); await page.locator('[class="product-image-wrapper"]').nth(0).click(); const productElement = page.locator('[data-product-id="1"]'); await productElement.nth(0).click() await page.locator('[class="btn btn-success close-modal btn-block"]').click() await page.locator('[class="product-image-wrapper"]').nth(1).click(); const productElement2 = page.locator('[data-product-id="2"]'); await productElement2.nth(1).click() await page.locator('[class="btn btn-success close-modal btn-block"]').click() }); ```
test('playing with assertios', async ({ page }) => { await page.goto('https://automationexercise.com/category\_products'); await page.locator('a\[href\*="product\_details/2"]').first().click(); await page.locator('#.quantity').fill('3'); await page.getByRole('button', { name: 'Add to cart' }).click(); await expect(page.locator('.modal-content')).toBeEnabled(); await expect(page.locator('.modal-header')).toContainText('Added!'); await page.locator('.close-modal').click(); await expect(page.locator('.modal-content')).toBeHidden(); })
Aqui mi solución. Me apoyo en el model con Github Copilot import { test, expect } from '@playwright/test';import exp from 'constants'; test('playing with assertions', async ({ page }) => {     await page.goto('https://automationexercise.com/');    await page.locator("a\[href='/product\_details/1']").click();    await page.reload();    await page.locator("a\[href='/product\_details/1']").click();    await page.locator("#quantity").fill('3');    await page.locator("button\[type='button']").click();     // Esperar a que aparezca el modal    await page.waitForSelector("//div\[@class='modal-content']");     // Verificar que el texto "Added!" está presente en el modal    const modalTitle = await page.locator(".modal-title.w-100").textContent();    expect(modalTitle).toBe("Added!");     await page.locator(".btn.btn-success.close-modal.btn-block").click();     // Verificar que el modal ya no es visible    const modalVisible = await page.isVisible("//div\[@class='modal-content']");    expect(modalVisible).toBe(false);});

Código del reto:

import { test, expect } from "@playwright/test";

test("test", async ({ page }) => {
  await page.goto("https://automationexercise.com/");
  page
    .locator(".features_items")
    .locator(".product-image-wrapper")
    .filter({
      has: page.locator(".single-products > .productinfo > p", {
        hasText: "Blue Top",
      }),
    })
    .locator(".choose > .nav > li > a")
    .click();
  await page.mouse.click(0, 0);
  await page.locator("#quantity").fill("3");
  await page.getByRole("button", { name: " Add to cart" }).click();
  await expect(page.getByText("Added!")).toBeVisible();
  await page.getByRole("button", { name: "Continue Shopping" }).click();
});

Hola!

Quiero compartirles mi propuesta.

  //GO TO THE PAGE
  await page.goto('https://automationexercise.com/category_products');

  //CLICK ON THE FIRST ELEMENT
  await page.locator('div.choose>ul>li>a').first().click();

  //ADD 3 PRODUCTS INTO THE SHOPPING CAR
  await page.locator('#quantity').fill('3');

  //CLICK ON THE BUTTON ADD TO CART
  await page.getByRole('button', { name: 'Add to cart' }).click();

  //VERIFY THE MODAL EXISTS
  await expect(page.locator('.modal-content')).toBeEnabled();

  //VERIFY THE TEXT EXISTS
  await expect(page.locator('.modal-header')).toContainText('Added!');

  //CLICK ON THE CONTINUE SHOPPING BUTTON
  await page.locator('.close-modal').click();

  //VERIFY THE MODAL IS NOT EXIST
  await expect(page.locator('.modal-content')).toBeHidden();

Saludos.

const viewProduct = ‘a[href="/product_details/1"]’;
const inputProduct1 = ‘#quantity’;

const titleAssertion = ‘h4.modal-title.w-100’;

test(‘playing with assertions’, async ({ page }) => {

await page.goto(‘https://automationexercise.com/category_products’);

await page.locator(viewProduct).click();
page.reload();

await page.locator(viewProduct).click();

await expect(page.locator(inputProduct1)).toBeVisible();
//await page.locator(inputProduct1).clear();
await page.locator(inputProduct1).fill(‘5’);

await page.locator(‘button.btn.btn-default.cart’).click();

await expect(page.locator(titleAssertion)).toContainText(‘Added!’);

¡Rock n’ Roll! 🤙

Mi solución al reto:

https://github.com/doulovera/course-playwright–platzi/

Reconozco que tuve que usar codegen para ver cómo podía cerrar el modal de Google Ads porque no pude hacerlo desde su id. Está bonito Playwright 😁

Adjunto mi solución al reto, quizás un poco más sencilla porque procuro utilizar las herramientas que me posee Playwright en su ultimo reléase. por ejemplo para hacer el hover y localizar un elemento entre elementos similares.
Espero les sea útil.