Skip to content

hollligan/qawolf

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

QA Wolf

Create browser tests 10x faster

Free and open source library to create Playwright/Jest browser tests and run them in CI

tweet npm version

🚀 Get Started | 📖 API | 👋 Chat | 🗺️ Roadmap


🐺 What is QA Wolf?

QA Wolf is a Node.js library for creating browser tests. Run one command (npx qawolf init) to configure your project and set up CI.

  • Skip writing boilerplate: Your browser actions are converted to Playwright/Jest code.
  • Create stable tests: Your tests automatically wait for elements. Element selectors use test attributes when possible, and multiple attributes otherwise.
  • Edit your tests: Edit your code as it is created and add steps to existing tests. Re-run your tests automatically with watch mode.
  • Run tests in CI: A workflow file for your CI provider is automatically created for you.
  • Debug with ease: Each test run includes a video and browser logs.

🖥️ Install

Documentation


Set up your project for browser tests:

cd /my/awesome/project
npm init qawolf
# or yarn create qawolf

Configure your test directory and CI provider:

? rootDir: Directory to create tests in (.qawolf)

? Choose CI Provider (Use arrow keys)
  Azure DevOps
  Bitbucket Pipelines
  CircleCI
❯ GitHub Actions
  GitLab CI/CD
  Jenkins
  Skip CI setup

This will install qawolf, jest and playwright as dev dependencies and create a CI workflow file to:

  • 🐎 Run tests in parallel
  • 📹 Record a video of each test
  • 📄 Capture browser logs

🎨 Create a test

Documentation


npx qawolf create url [name]

💪 Convert your actions into Playwright code:

Action Status Example
Click page.click(selectors['0_submit'])
Type page.type(selectors['0_username'], 'username')
Scroll qawolf.scroll(page, 'html', { x: 0, y: 200 })
Select page.selectOption(selectors['0_ice_cream'], 'chocolate')
Replace text page.fill(selectors['0_username'], 'username')
Paste page.type(selectors['password'], 'pasted')
Use a test attribute page.click("[data-qa='submit']")
Use a test attribute on an ancestor page.click("[data-qa='radio'] [value='cat']")
Use multiple pages/tabs qawolf.waitForPage(page.context(), 1)
Iframes 🗺️ Coming soon
Drag and drop 🗺️ Coming soon
File upload 🗺️ Coming soon
Back button 🗺️ Coming soon

As your test is created:

  • ✏️ Edit the code as you like (with or without watch mode)
  • 🖥️ Use the REPL to try out commands

✅ Run your tests

Documentation


On Chromium:

npx qawolf test [name]

On Firefox:

npx qawolf test --firefox [name]

On Webkit:

npx qawolf test --webkit [name]

On all browsers:

npx qawolf test --all-browsers [name]

🙋 Get help

We want QA Wolf to work for you, so please reach out to get help!

If you have a feature request or feedback, please open an issue or chat with us.


📝 License

QA Wolf is licensed under BSD-3-Clause.

About

🐺Create browser tests 10x faster

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 78.0%
  • JavaScript 12.1%
  • CSS 9.2%
  • HTML 0.7%