No tienes acceso a esta clase

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

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
7 Hrs
36 Min
56 Seg

Reto: escribe un test sin el uso de codegen

9/17
Recursos

Aportes 13

Preguntas 0

Ordenar por:

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

Ojalá se actualice la página de práctica. La página actual tiene ads flotantes que no permiten ejecutar el resto de código de la prueba.

Podría crear un script para cerra el anuncio publicitario, pero no siempre es el mismo tipo de anuncio y no siempre se cierra de la misma manera.

Veré si encuentro otro recurso útil e intentaré compartirlo.

Mi aporte del contenido actual de la página de ejemplo

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

test('carrito', async ({ page }) => { 

// ir a la pagina
await page.goto('https://automationexercise.com/products');

//hover en producto
await page.hover('a[href="/product_details/1"]');

//click en producto para ver mas detalles
await page.locator('a[href="/product_details/1"]');

//para evitar las ventanas emergentes
await page.goto('https://automationexercise.com/product_details/1');

//hacer click 2 veces
await page.locator('#quantity').click();
await page.locator('#quantity').fill('2');

//añadir al carrito
await page.getByText('Add to cart').click();

//hacer click en continuar
await page.getByText("Continue Shopping").click();

//verificar expect
await expect(page.getByText("Continue Shopping")).toBeHidden();
});
Mi código ya en 2024 ```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() }); ```
por aqui mi solucion ![](https://static.platzi.com/media/user_upload/image-bd577745-fa47-415b-af36-edc4f1e12422.jpg)
```js import { test, expect } from '@playwright/test'; test("añadir producto al carrito", async ({ page }) => { // ir a la url https://automationexercise.com/products await page.goto("https://automationexercise.com/products"); //hover del primer producto que encontremos await page.hover("body > section:nth-child(3) > div > div > div.col-sm-9.padding-right > div > div:nth-child(3)"); //click en el primer producto ver mas detalles await page.click("body > section:nth-child(3) > div > div > div.col-sm-9.padding-right > div > div:nth-child(3) a:has-text('View Product')"); await expect(page).toHaveURL("https://automationexercise.com/product_details/1"); //click en el boton + (dos veces) await page.locator("#quantity").fill("3"); //seleccionar en el menu dropdown un nuevo tamaño //await page.locator('#group_1').selectOption({ index: 1 }); //click en boton añadir al carrito await page.click('body > section > div > div > div.col-sm-9.padding-right > div.product-details > div.col-sm-7 > div > span > button') // verificar (expect) "Added!" await expect(page.locator('#cartModal > div > div > div.modal-header > h4')).toBeVisible(); await expect(page.locator('#cartModal > div > div > div.modal-header > h4')).toContainText("Added!"); //click en boton continue shopping await page.click('#cartModal > div > div > div.modal-footer > button') //el modal debe no ser visible await page.click('#header > div > div > div > div.col-sm-8 > div > ul > li:nth-child(1) > a'); }); ```import { test, expect } from '@playwright/test'; test("añadir producto al carrito", async ({ page }) => {// ir a la url <https://automationexercise.com/products>    await page.goto("https://automationexercise.com/products");//hover del primer producto que encontremos    await page.hover("body > section:nth-child(3) > div > div > div.col-sm-9.padding-right > div > div:nth-child(3)");//click en el primer producto ver mas detalles    await page.click("body > section:nth-child(3) > div > div > div.col-sm-9.padding-right > div > div:nth-child(3) a:has-text('View Product')");    await expect(page).toHaveURL("https://automationexercise.com/product\_details/1");//click en el boton + (dos veces)    await page.locator("#quantity").fill("3");//seleccionar en el menu dropdown un nuevo tamaño    //await page.locator('#group\_1').selectOption({ index: 1 });//click en boton añadir al carrito    await page.click('body > section > div > div > div.col-sm-9.padding-right > div.product-details > div.col-sm-7 > div > span > button')// verificar (expect) "Added!"    await expect(page.locator('#cartModal > div > div > div.modal-header > h4')).toBeVisible();    await expect(page.locator('#cartModal > div > div > div.modal-header > h4')).toContainText("Added!");//click en boton continue shopping    await page.click('#cartModal > div > div > div.modal-footer > button')//el modal debe no ser visible    await page.click('#header > div > div > div > div.col-sm-8 > div > ul > li:nth-child(1) > a');}); Mi codigo
MI aporte, mezclando cosas de playwright y xpath ```js import { test, expect } from '@playwright/test'; test('test-reto', async ({ page }) => { await page.goto('https://automationexercise.com/#google_vignette'); await page.locator('.choose > .nav > li > a').first().click(); await page.locator('#quantity').fill('3'); await page.locator('//button [@class= "btn btn-default cart"]').click(); await expect(page.locator('//h4 [@class= "modal-title w-100"]')).toBeVisible(); await page.getByRole('button', {name: 'Continue Shopping'}).click(); await expect(page.locator('.modal-content')).toBeDisabled; }); ```import { test, expect } from '@playwright/test'; test('test-reto', async ({ page }) => {  await page.goto('https://automationexercise.com/#google\_vignette');     await page.locator('.choose > .nav > li > a').first().click();   await page.locator('#quantity').fill('3');    await page.locator('//button \[@class= "btn btn-default cart"]').click();  await expect(page.locator('//h4 \[@class= "modal-title w-100"]')).toBeVisible();   await page.getByRole('button', {name: 'Continue Shopping'}).click();   await expect(page.locator('.modal-content')).toBeDisabled; });
import { test, expect } from '@playwright/test';import { chromium } from 'playwright'; 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(); })
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();
  await expect(page.locator('#cartModal')).not.toBeVisible();
});

Asi quedo el mi tests de este reto:

<import { test, expect } from '@playwright/test';

test('Añadir producto al carrito', async ({ page }) => {
  //Abre en el navegaador la tienda virtual 
  await page.goto('https://automationexercise.com/products');
    
  //Desliza hasta ver los productos
  await page.locator('img[src="/get_product_picture/1"]').hover();

  // Haz click en "Ver más detalles" del primer producto
  await page.locator('a[href="/product_details/1"]').click();
 
  if (await page.frameLocator('iframe[name="aswift_5"]').frameLocator('iframe[name="ad_iframe"]').getByRole('button', { name: 'Close ad' }).isVisible()){
    await page.frameLocator('iframe[name="aswift_5"]').frameLocator('iframe[name="ad_iframe"]').getByRole('button', { name: 'Close ad' }).click();
  }
  expect(page).toHaveURL('https://automationexercise.com/product_details/1')

  // Usal el boton (+) para añadir 3 productos al carrito
  await page.locator('#quantity').fill('3');

  // Haz click en añadir al carrito
  await page.getByText('Add to cart').click();

  // Verifica que el modal y el texto de "Sucess" aparece
  expect(await page.locator('div[class="modal-dialog modal-confirm"]').isVisible()).toBeTruthy();
  await expect(page.getByText('Added!')).toBeVisible();

  // Haz click en el boton de "Continue Shopping"
  await page.getByText('Continue Shopping').click();

  // Verifica que el modal ya no es visible
  await expect(page.getByText('Continue Shopping')).toBeHidden();

});> 

Use el codegen para poder cerrar la publicidad pero es un buen avance

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

test('challenge test', async ({ page }) => {
    // ir a la url
    await page.goto('https://automationexercise.com/products');
    // remove ad
    await page.locator('.grippy-host').click();
    // Click view product
    await page.locator('a[href="/product_details/1"]').click();
    // close ads
    await page.frameLocator('iframe[name="aswift_5"]').frameLocator('iframe[name="ad_iframe"]').getByRole('button', { name: 'Close ad' }).click();
    // Verify url
    await expect(page).toHaveURL('https://automationexercise.com/product_details/1')
    // Select quantity 3
    await page.locator('#quantity').fill('3')
    // click add to cart
    await page.getByRole('button', { name: ' Add to cart' }).click();
    // verify message added
    await expect(page.getByRole('heading', { name: 'Added!' })).toContainText('Added')
    // click continue shopping
    await page.getByRole('button', { name: 'Continue Shopping' }).click();
    // verify modal not visible
    await expect(page.getByRole('heading', { name: 'Added!' })).toBeHidden()

  
});

Lets go !! 🤙

Tambien para poder seleccionar el primer elemento se puede hacer de la siguiente manera:

await page.hover("#homefeatured > li:first-child")

Mi solución al reto.

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

const BASE_URL = 'https://automationexercise.com/';

test('Order a product on Shop', async ({ page }) => {
  await page.goto(BASE_URL);
  await expect(page).toHaveURL(BASE_URL)
  await page.hover("a[href='/product_details/5']");
  await expect(page.getByText('View Product')).toHaveCount(34);
  await page.locator("a[href='/product_details/1']").click();
  const quantity = await page.locator("input[type='number']");
  await quantity.clear();
  await quantity.click();
  await quantity.fill("3");
  await page.getByText("Add to cart").click();
  await page.getByText("Continue Shopping").click();
  await expect(page.getByText("Continue Shopping")).toBeHidden();
});