No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y mucho m谩s.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

4 D铆as
11 Hrs
5 Min
52 Seg

Reto: escribe un test sin el uso de codegen

9/17
Recursos

Aportes 10

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 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();
});