This commit is contained in:
Lukáš Kaňka
2023-08-15 18:27:27 +02:00
commit a117466599
116 changed files with 6597 additions and 0 deletions

View File

@ -0,0 +1,27 @@
import { test, expect } from '@playwright/test';
//pokud zapíšeme za test.only spustíme pouze jeden tento test
test('Element state', async ({ page }) => {
await page.goto('https://www.saucedemo.com');
//Vypíšeme zda stav elementu jestli je viditelný
await expect(page.locator('#user-name')).toBeVisible();
//await expect(page.locator('#user-name')).toContain;
//Vypíšeme zda stav elementu jestli je editovatelný
await expect(page.locator('#password')).toBeEditable();
//Vypíšeme zda stav elementu jestli je na stránce jedenkrát (to je číslo 1 v závorce)
await expect(page.locator('#login-button')).toHaveCount(1);
//Ověří že se některý element na stránce nenáchází. Přesný opak to.BeVisible. Na stránce by se neměl nacházet tento element
await expect(page.locator('#skillmea')).not.toBeVisible();
});
// toto je idetifikovatelný element -- > await page.locator('#user-name')
// Pokud nám test někde padá nebo chci případně přeskočit místo kde padl použiji .soft v tomto místě přeskočí chybu a pkračuje dál
// await expect.soft(page.locator('#password'))not.toBeEditable();
// seznam všech asertů můžeš získat že za tešku vložím .toBeHave nebou .toBeContain
//await expect(page.locator('#user-name')).toContain;

View File

@ -0,0 +1,18 @@
import { test, expect } from '@playwright/test';
//pokud zapíšeme za test.only spustíme pouze jeden tento test
test('Element state', async ({ page }) => {
await page.goto('https://www.saucedemo.com');
//Vypíšeme zda stav elementu jestli je editovatelný
console.log(await page.locator('#user-name').isEditable());
//Vypíšeme zda stav elementu jestli je viditelný
console.log(await page.locator('#password').isVisible());
//Vypíšeme zda stav elementu jestli je skrytý
console.log(await page.locator('#login-button').isHidden());
});

View File

@ -0,0 +1,18 @@
import { test, expect } from '@playwright/test';
test('has title', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
});
test('get started link', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Click the get started link.
await page.getByRole('link', { name: 'Get started' }).click();
// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

View File

@ -0,0 +1,18 @@
import { test, expect } from '@playwright/test';
test('has title', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);
});
test('get started link', async ({ page }) => {
await page.goto('https://playwright.dev/');
// Click the get started link.
await page.getByRole('link', { name: 'Get started' }).click();
// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

View File

@ -0,0 +1,29 @@
import { test, expect } from '@playwright/test';
import { LoginPage } from '../page-objects/LoginPage';
import { HomePage } from '../page-objects/HomePage';
// přihlášení na HomePage a ověření textu domovské stránky.
test('Verify home title', async ({ page }) => {
const loginPage = new LoginPage(page);
const homePage = new HomePage(page);
await loginPage.gotoLoginPage();
await loginPage.login();
await expect(homePage.title).toBeVisible();
});
// test přidání produktu do košíku a kontrola že zobrazuje 1 položka v košíku
test('Verify add to card functionality', async ({ page }) => {
const loginPage = new LoginPage(page);
const homePage = new HomePage(page);
await loginPage.gotoLoginPage();
await loginPage.login();
await homePage.clickOnAddToCart();
await expect(homePage.cardBadge).toHaveText("1");
});
//Odstranit produkt z košíká zkontrolovat že v něm není
//vytvořit novou třídu pro produkt page, identifikovat elementy, napsat test na přidání do košíku product page, kliknutína tlačítko back ověřím že se dostanu zpět na homePage

View File

@ -0,0 +1,79 @@
/*
Zápis pomocí Page_Objects --> je kratší, čitatelnější a přehlednější. Pokud se například změní lokátor id nemusím ho měnit ve všech testech
ale, v daném page-objects
ctrl + click mě přesune na zadanou metodu!!
*/
import { test, expect } from '@playwright/test';
//Importujeme vytvořenou třídu z page-objects
import { LoginPage } from '../page-objects/LoginPage';
test('Successful login', async ({ page }) => {
// nová instance loginPage odkazuje na metody co jsme si vytvořili v LoginPage
const loginPage = new LoginPage(page);
// zadáme metody co jsme vytvořily v LoginPage
await loginPage.gotoLoginPage();
// místo tohoto použijeme námi vytvořenou metodu login z LoginPage
//await loginPage.enterValidUsername();
//await loginPage.enterValidPassword();
//await loginPage.clickLoginButton();
// metoda login
await loginPage.login();
// ověříme že jsme se úspěšně přihlásily
await expect(page).toHaveURL('https://www.saucedemo.com/inventory.html');
/*
// způsob jeden test komplet v kódu bez odkazu na page-objects
await page.goto('https://www.saucedemo.com/');
await page.locator('[data-test="username"]').click();
await page.locator('[data-test="username"]').fill('standard_user');
await page.locator('[data-test="password"]').click();
await page.locator('[data-test="password"]').fill('secret_sauce');
await page.locator('[data-test="login-button"]').click();
// Zkontrolujeme jestli na stránce je viditelný Swag Labs
await expect(page.getByText('Swag Labs')).toBeVisible();
*/
});
// test přihlášení s neplatným heslem
test('Cannot login with valid username and invalid password', async ({ page }) => {
// test reporty(video 23):
const loginPage = new LoginPage(page);
await loginPage.gotoLoginPage();
await loginPage.enterValidUsername();
await loginPage.enterInvalidPassword();
await loginPage.clickLoginButton();
await expect(loginPage.invalidCredentialsErrorMessage).toBeVisible();
});
//test s neplatným přihlašovacím jménem
test('Cannot login with invalid username and valid password', async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.gotoLoginPage();
await loginPage.enterInvalidUsername();
await loginPage.enterValidPassword();
await loginPage.clickLoginButton();
await expect(loginPage.invalidCredentialsErrorMessage).toBeVisible();
});
//test pouze s kliknutím na login button
test('Cannot login with blank fields', async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.gotoLoginPage();
await loginPage.clickLoginButton();
await expect(loginPage.requiredCredentialsErrorMassage).toBeVisible();
});
// přihlášení s zablokovaným userem
test('Cannot login with locked out user', async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.gotoLoginPage();
await loginPage.enterLockedOutUser();
await loginPage.enterValidPassword();
await loginPage.clickLoginButton();
await expect(loginPage.lockedOutErrorMassage).toBeVisible();
});