Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
4 changes: 4 additions & 0 deletions docs/test-strategy.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
10 changes: 9 additions & 1 deletion tests/marketplace/marketplace.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down
Loading