Skip to content

Commit

Permalink
chore: 🔧 added playwright
Browse files Browse the repository at this point in the history
  • Loading branch information
singhAmandeep007 committed Jun 22, 2024
1 parent a8e2a9f commit 4effeb3
Show file tree
Hide file tree
Showing 9 changed files with 608 additions and 1 deletion.
27 changes: 27 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Playwright Tests
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,6 @@ yarn-error.log*
/playwright-report/
/blob-report/
/playwright/.cache/


TODO.TODO
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@
"cy:report:combine:html": "run-s cy:report:combine:json cy:report:generate:html",
"cy:report:combine:json": "mochawesome-merge reports/cypress/result/json/*.json > reports/cypress/result/json/combined-json-report.json",
"cy:report:generate:html": "marge reports/cypress/result/json/combined-json-report.json --no-showPassed --assetsDir reports/cypress/result/html -o reports/cypress/result/html -f combined-html-report -t \"Cypress HTML Report\"",
"cy:report:combine:xml": "jrm reports/cypress/result/xml/combined-xml-report.xml \"reports/cypress/result/xml/*.xml\""
"cy:report:combine:xml": "jrm reports/cypress/result/xml/combined-xml-report.xml \"reports/cypress/result/xml/*.xml\"",
"PLAYWRIGHT": "------------------------------------------------------------------------",
"pw:open": "playwright test --ui",
"pw:test": "playwright test",
"pw:report": "playwright show-report"
},
"browserslist": {
"production": [
Expand Down
77 changes: 77 additions & 0 deletions playwright.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { defineConfig, devices } from '@playwright/test';

/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// require('dotenv').config();

/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: './playwright',
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
// baseURL: 'http://127.0.0.1:3000',

/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
},

/* Configure projects for major browsers */
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},

{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},

{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},

/* Test against mobile viewports. */
// {
// name: 'Mobile Chrome',
// use: { ...devices['Pixel 5'] },
// },
// {
// name: 'Mobile Safari',
// use: { ...devices['iPhone 12'] },
// },

/* Test against branded browsers. */
// {
// name: 'Microsoft Edge',
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
// },
// {
// name: 'Google Chrome',
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
// },
],

/* Run your local dev server before starting the tests */
// webServer: {
// command: 'npm run start',
// url: 'http://127.0.0.1:3000',
// reuseExistingServer: !process.env.CI,
// },
});
18 changes: 18 additions & 0 deletions playwright/example.spec.ts
Original file line number Diff line number Diff line change
@@ -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 page to have a heading with the name of Installation.
await expect(page.getByRole("heading", { name: "Installation" })).toBeVisible();
});
37 changes: 37 additions & 0 deletions playwright/pages/Home.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { expect, type Locator, type Page } from "@playwright/test";

export class HomePage {
readonly page: Page;
readonly getStartedLink: Locator;
readonly gettingStartedHeader: Locator;
readonly pomLink: Locator;
readonly tocList: Locator;

constructor(page: Page) {
this.page = page;
this.getStartedLink = page.locator("a", { hasText: "Get started" });
this.gettingStartedHeader = page.locator("h1", { hasText: "Installation" });
this.pomLink = page
.locator("li", {
hasText: "Guides",
})
.locator("a", {
hasText: "Page Object Model",
});
this.tocList = page.locator("article div.markdown ul > li > a");
}

async goto() {
await this.page.goto("https://playwright.dev");
}

async getStarted() {
await this.getStartedLink.first().click();
await expect(this.gettingStartedHeader).toBeVisible();
}

async pageObjectModel() {
await this.getStarted();
await this.pomLink.click();
}
}
1 change: 1 addition & 0 deletions playwright/pages/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./Home";
3 changes: 3 additions & 0 deletions playwright/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "../tsconfig.json"
}
Loading

0 comments on commit 4effeb3

Please sign in to comment.