Code Monkey home page Code Monkey logo

demo.playwright's Introduction

๐ŸŽญ demo.playwright

This repo is used to demo various testing scenarios with Playwright ๐ŸŽญ, using the official test-runner and scripts authored in TypeScript.

The test.yml GitHub Action workflow is used to:

Run Playwright example tests

accessibility - runs accessibility checks against https://playwright.dev/docs/accessibility-testing

android - runs a basic test using Android's WebView.

basic - basic tests to show interactions, element selectors, assertions, upload files, read a response, mock a response, and page object model (POM).

chrome-extension - basic test that gets a handle to the background page of Chrome extension.

drag-and-drop - runs example drag-and-drop test utilizing https://www.w3schools.com/html/html5_draganddrop.asp.

fixtures - runs example tests utilizing test and worker fixtures.

github-api - uses GitHub API to test creation of a new repo, bug, and feature, then deletion of repo.

oauth - runs oauth tests for LinkedIn, Facebook, and Google, to login to https://courses.ultimateqa.com/users/sign_in.

performance - web performance tests using resource timing API, DevTools, and lighthouse, run against https://fastestwebsite.net

svgomg - End-to-end tests for SVGOMG! site, hosted at https://demo.playwright.dev/svgomg

todomvc - End-to-end tests for ToDoMVC site, hosted at https://demo.playwright.dev/todomvc

visual-comparison - visually compares snapshots with golden screenshots and text content for playwright.dev landing page.

Publish each HTML report to their respective directory

When the above tests are finished, the results are published to GitHub pages:

Configuration

The baseURL value for most tests is set via .env file that you'll find at the root of each folder. Typically this file is gitignored; by including it in this demo repo, it makes running and sharing these tests easier.

Have a testing scenario you'd like to see included?

Please open an issue with details.

demo.playwright's People

Contributors

jfgreffier avatar marcusfelling avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

demo.playwright's Issues

Make local run easier

This repo is great as a resource, but most tests won't run locally out of the box.

The first issue is that the base URLs are set in the Github Actions. What do you think of moving them in the test ? URLs are then hardcoded but the tests can run independently. Another solution is using one .env file defining the different base URL.

[Idea for testing scenario] Using fixtures with multiple browser windows/tabs in single test

Hello, can you provide an example of using fixtures in situations when i want to initialize page object for multiple pages inside single test? For example i have Livechat class and i want to init livechat page object for each browser. How to achieve this with using fixtures? I understand how to do this while using a single page instance in your test like this example: https://github.com/MarcusFelling/demo.playwright/blob/main/basic/pom/pom-with-fixtures.spec.ts but not sure how to do this with multiple pages in single test.

  test('Test with multiple livechat windows', async ({ browser }) => {
    const browserWindow1 = await browser.newContext() 
    const browserWindow2 = await browser.newContext()
    const browserWindow3 = await browser.newContext()

    const page1 = await browserWindow1.newPage()
    const page2 = await browserWindow2.newPage()
    const page3 = await browserWindow3.newPage()
    
    const livechat1 = new Livechat(page1)
    const livechat2 = new Livechat(page2)
    const livechat3 = new Livechat(page3)
    
    await livechat1.startSession()
    await livechat2.startSession()
    await livechat3.startSession()
    ...
   })
})

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.