diff --git a/README.md b/README.md new file mode 100644 index 0000000..9a0e138 --- /dev/null +++ b/README.md @@ -0,0 +1,113 @@ +# DISCOGS-UI + +Playwright + TypeScript UI automation portfolio project for [Discogs](https://www.discogs.com/). + +DISCOGS-UI validates key Discogs user journeys including homepage availability, search, release page navigation, marketplace browsing, login page behavior, negative search handling, unauthenticated account access, and automated accessibility smoke checks. + +--- + +## Project Purpose + +This project was created as a modern QA portfolio project that combines my professional QA experience with my background in music. + +Before moving into tech and QA, I worked in the music industry in several roles, including DJ, radio DJ, journalist, retail marketing director for a record label, and independent promoter. Discogs was a natural choice because it connects a personally meaningful music platform with practical UI automation, test design, CI execution, and documentation skills. + +--- + +## Tech Stack + +- Playwright +- TypeScript +- Node.js +- GitHub Actions +- `@axe-core/playwright` for accessibility smoke checks +- GitHub Actions artifacts / Playwright HTML report + +--- + +## Version 1 Goal + +Version 1 focuses on building a small, stable, and well-documented UI automation suite that can be run locally and in CI. + +The goal is not to create a large test framework. The goal is to demonstrate practical QA judgment through focused test coverage, maintainable code, meaningful assertions, CI execution, and clear documentation. + +--- + +## Version 1 Scope + +### In Scope + +- Homepage smoke validation +- Search functionality using data-driven test cases +- Search result validation for artist, release, and label queries +- Search-to-release/master page integration flow +- Marketplace browse smoke validation +- Negative search validation +- Login page smoke validation +- Negative auth validation for unauthenticated account access +- Automated accessibility smoke checks on selected public pages +- Cross-browser execution with Playwright projects +- CLI execution through npm scripts +- CI execution through GitHub Actions +- Playwright HTML reporting + +### Out of Scope + +- Checkout, payment, and seller messaging flows +- Creating, editing, or deleting collection items +- Full OAuth application implementation +- Full authenticated collection flow +- Full WCAG accessibility audit +- Visual regression testing +- Performance testing +- Mobile and responsive testing +- API contract testing + +--- + +## Current Test Coverage + +| Area | Test Type | Description | +|---|---|---| +| Homepage | Smoke | Validates that the Discogs homepage loads and search is available | +| Search | Functional / Data-driven | Validates search behavior for artist, release, and label queries | +| Search to Release | Integration | Validates that a selected search result opens a matching release or master page | +| Search | Negative | Validates graceful handling of an unlikely search query | +| Marketplace | Smoke | Validates that the marketplace browse page loads successfully | +| Login Page | Smoke / Auth | Validates that the login page loads with expected form controls | +| Account Access | Negative / Auth | Validates that unauthenticated users cannot access account-level areas | +| Public Pages | Accessibility | Runs automated accessibility smoke checks on selected public pages | + +--- + +## Project Structure + +```text +DISCOGS-UI/ +├── docs/ +│ ├── accessibility-notes.md +│ ├── ai-usage-notes.md +│ ├── bugs-found.md +│ ├── lessons-learned.md +│ ├── test-scenarios.md +│ └── test-strategy.md +├── pages/ +│ ├── HomePage.ts +│ ├── LoginPage.ts +│ ├── MarketplacePage.ts +│ ├── ReleasePage.ts +│ └── SearchResultsPage.ts +├── test-data/ +│ ├── negative-search-cases.json +│ ├── release-cases.json +│ └── search-cases.json +├── tests/ +│ ├── accessibility/ +│ ├── auth/ +│ ├── integration/ +│ ├── marketplace/ +│ ├── search/ +│ └── smoke/ +├── playwright.config.ts +├── package.json +└── README.md \ No newline at end of file diff --git a/docs/test-strategy.md b/docs/test-strategy.md index 2aad250..1c219a1 100644 --- a/docs/test-strategy.md +++ b/docs/test-strategy.md @@ -124,3 +124,7 @@ Future enhancements may include: AI was used to help draft the initial test strategy, coverage categories, sample test names, and documentation structure. All AI-assisted content was manually reviewed before being added to the project. Manual review included validating the Version 1 scope, confirming selected test scenarios, checking assumptions against the live Discogs UI, and ensuring the strategy accurately reflects the goals of the portfolio project. + +### Browser-Specific Limitations + +The marketplace smoke test is skipped in WebKit because Discogs may return a Cloudflare security challenge instead of the marketplace page. This is a third-party site behavior rather than a testable application state for this portfolio project. \ No newline at end of file diff --git a/tests/marketplace/marketplace.spec.ts b/tests/marketplace/marketplace.spec.ts index 8e4ef28..7011b24 100644 --- a/tests/marketplace/marketplace.spec.ts +++ b/tests/marketplace/marketplace.spec.ts @@ -2,7 +2,15 @@ import { test } from '@playwright/test'; import { MarketplacePage } from '../../pages/MarketplacePage'; test.describe('Discogs marketplace', () => { - test('@smoke @marketplace marketplace browse page loads', async ({ page }) => { + test('@smoke @marketplace marketplace browse page loads', async ({ + page, + browserName, + }) => { + test.skip( + browserName === 'webkit', + 'Discogs marketplace may trigger Cloudflare challenge in WebKit' + ); + const marketplacePage = new MarketplacePage(page); await test.step('Navigate to Discogs marketplace browse page', async () => {