Thank you for your interest in the QA Engineer role at Psynth! This take-home assessment is designed to evaluate your hands-on skills in E2E test automation, CI/CD integration, test planning, and bug reporting.
Estimated time: 2–3 hours Deadline: Please submit within 5 calendar days of receiving this assignment.
You will write tests against SauceDemo, an open demo e-commerce app by Sauce Labs:
| Username | Description |
|---|---|
standard_user |
Normal user — all features work |
locked_out_user |
Locked out — login should fail |
problem_user |
Broken images and form behavior |
performance_glitch_user |
Simulated slow responses |
error_user |
Triggers various application errors |
visual_user |
Visual/layout inconsistencies |
Password for all users: secret_sauce
Take a few minutes to explore the app manually before you start writing tests.
This assessment has 4 parts. All parts are required unless marked as bonus.
Create a file called TEST_PLAN.md in the root of this repo. It must include:
- Scope: Which user journeys and pages you chose to cover, and why.
- Test cases: A prioritized list of test cases (at least 10) covering:
- Happy-path flows (login → browse → cart → checkout)
- Negative/edge cases (invalid login, empty cart, missing form fields)
- At least one cross-user scenario (e.g.,
problem_uservs.standard_user)
- Out of scope: What you intentionally excluded and why (given the 2–3 hr constraint).
- Risk assessment: Which areas of the app are most likely to break and why.
Implement automated tests for at least 6 of the test cases from your test plan.
- Framework: Use Cypress or Playwright (your choice).
- Language: JavaScript or TypeScript.
- Structure: Tests must be organized in the
tests/directory (or framework default likecypress/e2e/). Use page objects or a similar abstraction pattern — do not put all selectors inline. - Test independence: Each test must be runnable independently (no reliance on test execution order).
- Assertions: Use meaningful assertions — not just "page loaded" checks.
- Data cleanup: Tests should handle their own setup/teardown where needed.
- Clean, readable, and maintainable test code.
- Proper use of selectors (prefer
data-testattributes where available over brittle CSS/XPath). - Sensible waits and retry strategies (no hard-coded
sleep/waitcalls). - Clear test naming that describes the behavior being verified.
Set up a GitHub Actions workflow so that your tests run automatically.
- Create or complete the workflow file at
.github/workflows/e2e-tests.yml. - The workflow must:
- Trigger on push to
mainand on pull requests. - Install dependencies and run the full test suite.
- Upload test results/reports as artifacts (screenshots on failure, HTML report, or video — whatever your framework supports).
- Trigger on push to
- A starter workflow file is provided as a reference — you may modify or replace it entirely.
- A working pipeline that passes when tests pass and fails when tests fail.
- Proper caching of dependencies for faster runs.
- Artifact uploads so we can review test results without cloning the repo.
While exploring the app (especially with problem_user or error_user), you will encounter bugs.
Create a file called BUG_REPORT.md with at least 2 bug reports. Each report must follow this format:
## Bug Title
**Severity:** Critical / High / Medium / Low
**User(s) affected:** (which test user)
**Environment:** Browser, OS
### Steps to Reproduce
1. Step one
2. Step two
3. ...
### Expected Result
What should happen.
### Actual Result
What actually happens.
### Evidence
Screenshot or test output (paste inline or link to a file in the repo).
### Notes
Any additional context, root cause hypothesis, or recommended fix.
-
Clone or download this repository.
-
Initialize your framework of choice:
Cypress:
npm init -y npm install -D cypress npx cypress open # to scaffold foldersPlaywright:
npm init -y npm install -D @playwright/test npx playwright install
-
Write your tests in the
tests/folder (Playwright) orcypress/e2e/folder (Cypress). -
Push your work to a personal GitHub repository and invite sbpsynth as a collaborator.
| File | Purpose |
|---|---|
README.md |
This file — your instructions |
.github/workflows/e2e-tests.yml |
Starter CI workflow (modify as needed) |
tests/.gitkeep |
Placeholder for your test files |
.gitignore |
Standard ignores for node_modules, reports |
Before submitting, make sure you have:
-
TEST_PLAN.mdwith at least 10 prioritized test cases - At least 6 automated E2E tests that pass against SauceDemo
- Page object or similar abstraction pattern used
- Tests are independent and use no hard-coded waits
-
.github/workflows/e2e-tests.ymlruns tests on push/PR - CI artifacts uploaded (screenshots, reports, or videos)
-
BUG_REPORT.mdwith at least 2 detailed bug reports - All code is clean, commented, and well-organized
-
READMEor notes explaining how to run tests locally
| Area | Weight |
|---|---|
| Test plan quality | 20% |
| Automation code | 35% |
| CI/CD integration | 20% |
| Bug reports | 15% |
| Code style & docs | 10% |
- You are free to use any npm packages, plugins, or utilities you find helpful.
- If you run into issues with the demo app being down, document it and test what you can.
- We value quality over quantity — 6 solid tests beat 20 flaky ones.
- If anything is unclear, reply to the email that sent you this assignment.
Good luck! We look forward to reviewing your work. 🚀