Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
1e71366
refactor: enhance React hooks performance and modularity
gcodeprabhu Jul 31, 2025
2da7504
refactor: improve toolbar UX with flex-wrap layout and enhanced styling
gcodeprabhu Jul 31, 2025
1bd44d7
fix: improve search focus and dark mode text colors
gcodeprabhu Jul 31, 2025
be92e78
updated configs for eslint, tsconfig, prettier
gcodeprabhu Aug 3, 2025
fff9958
recreted pnpm.lock
gcodeprabhu Aug 3, 2025
4d39234
fixed test cases
gcodeprabhu Aug 3, 2025
3a541f3
feat: add fullscreen functionality with consistent button sizing and …
gcodeprabhu Aug 3, 2025
25097be
feat: improve slideshow UX with proper card scrolling and link-style …
gcodeprabhu Aug 3, 2025
09124d9
feat: migrate from Cypress to Playwright for E2E testing
gcodeprabhu Aug 4, 2025
ccff0b7
feat: add comprehensive E2E test coverage for all timeline features
gcodeprabhu Aug 4, 2025
a2d06a0
- Add comprehensive theme validation tests with edge case coverage …
gcodeprabhu Aug 4, 2025
6325e67
- Add new Technology Evolution Timeline showcasing 53+ years of tech …
gcodeprabhu Aug 4, 2025
4699a17
fix(tests): resolve Playwright test failures and optimize browser con…
gcodeprabhu Aug 7, 2025
38cac8a
trigger deploy
gcodeprabhu Aug 7, 2025
ef2f30b
fixed the lock file
gcodeprabhu Aug 7, 2025
0d83408
removing cypress as we are moving over to playwright
gcodeprabhu Aug 7, 2025
4524219
regen lock file
gcodeprabhu Aug 7, 2025
017f3ec
fix pnpm versions on workflows
gcodeprabhu Aug 7, 2025
d1ec4ec
fix pnpm workflow
gcodeprabhu Aug 7, 2025
69a4411
fix lock version
gcodeprabhu Aug 7, 2025
1deba4e
Update pnpm lockfile version and streamline Playwright workflow
gcodeprabhu Aug 7, 2025
573a0f5
Refactor timeline components to unify context management and enhance …
gcodeprabhu Aug 7, 2025
19cb7f0
Update Playwright workflow to remove Firefox from browser matrix
gcodeprabhu Aug 7, 2025
50786f7
Enhance timeline navigation and scrolling experience
gcodeprabhu Aug 7, 2025
96aad48
Enhance focus management and accessibility in timeline components
gcodeprabhu Aug 7, 2025
ae98db6
Refactor timeline components for improved visibility and focus manage…
gcodeprabhu Aug 8, 2025
64e6067
Refactor context management and update dependencies for timeline comp…
gcodeprabhu Aug 9, 2025
ddf9942
Refactor timeline components for improved focus management and access…
gcodeprabhu Aug 9, 2025
ffe295b
Add configuration files and enhance project structure for improved de…
gcodeprabhu Aug 10, 2025
4c9e91f
Update CI and release workflows to use Node.js version 22 and remove …
gcodeprabhu Aug 10, 2025
62c07c7
Implement migration to vanilla-extract for styling and enhance ESLint…
gcodeprabhu Aug 10, 2025
0b42699
Refactor timeline components and styles for improved maintainability …
gcodeprabhu Aug 10, 2025
fb15b24
Enhance timeline component styles and functionality
gcodeprabhu Aug 10, 2025
a199ca9
Enhance timeline components with improved styling and focus management
gcodeprabhu Aug 11, 2025
980952b
feat(toolbar): flip to Vanilla Extract by default and remove styled-c…
gcodeprabhu Aug 11, 2025
cacab00
chore(toolbar): remove styled-components toolbar.styles.ts after VE flip
gcodeprabhu Aug 11, 2025
a8f60f1
refactor(timeline): enhance styling and accessibility features
gcodeprabhu Aug 11, 2025
99893b5
feat(timeline): enhance timeline UX with sticky toolbar, continuous l…
gcodeprabhu Aug 18, 2025
c342c4a
feat: enhance text overlay with minimize/maximize controls and fix al…
gcodeprabhu Aug 18, 2025
ff139b8
fix(types): resolve TypeScript strict mode errors across components
gcodeprabhu Aug 18, 2025
8a12eaa
refactor(config): update vanilla-extract plugin identifiers for envir…
gcodeprabhu Aug 18, 2025
6f7faa5
feat: complete migration from styled-components to vanilla-extract
gcodeprabhu Aug 19, 2025
c406a73
fix: resolve nested timeline rendering and icon positioning issues
gcodeprabhu Aug 19, 2025
1813ac2
refactor: remove unused style files post vanilla-extract migration
gcodeprabhu Aug 20, 2025
8387e37
refactor: remove unused styles and consolidate CSS architecture
gcodeprabhu Aug 20, 2025
ce9c04d
chore: remove unused configuration files and documentation
gcodeprabhu Aug 20, 2025
ff4dcac
feat: enhance timeline components with improved UI controls and
gcodeprabhu Aug 20, 2025
fea1deb
fix: implement proper responsive breakpoint behavior for vertical
gcodeprabhu Aug 20, 2025
10d8e87
refactor: replace conditional prop spreading with pickDefined utility
gcodeprabhu Aug 20, 2025
843fab2
- Replace verbose `{...(condition ? { prop: value } : {})}` pattern w…
gcodeprabhu Aug 20, 2025
ece20ac
feat: enhance horizontal timeline with smaller points and improved
gcodeprabhu Aug 20, 2025
5aa233c
- Improve font color handling in both normal and text overlay modes
gcodeprabhu Aug 20, 2025
6fbfc17
fix: improve popover positioning and menu item UX
gcodeprabhu Aug 30, 2025
b3c7ba9
refactor: modernize icon components and migrate styles to vanilla-ext…
gcodeprabhu Sep 2, 2025
b97c829
fix: resolve slideshow and keyboard navigation issues with comprehens…
gcodeprabhu Sep 2, 2025
6bf1d47
fix: resolve slideshow media deadlock and standardize icon dimensions
gcodeprabhu Sep 2, 2025
ea77b95
feat: enhance accessibility and fix navigation issues
gcodeprabhu Sep 2, 2025
4a8a27d
feat: add light and dark theme implementations with extensive design …
gcodeprabhu Sep 3, 2025
c4bad56
feat: implement sticky toolbar functionality across timeline components
gcodeprabhu Sep 3, 2025
27dd6d7
chore: update Node.js version to 22.x and pnpm version to 10.15.1 acr…
gcodeprabhu Sep 4, 2025
c191122
feat: add stylelint configuration and implement sticky toolbar featur…
gcodeprabhu Sep 4, 2025
57b04b5
feat: Add Google Fonts integration with FontProvider and utility func…
gcodeprabhu Sep 4, 2025
50ceef6
feat: Integrate Google Fonts support across components and update typ…
gcodeprabhu Sep 4, 2025
44811c8
Refactor theme styles and improve code formatting
gcodeprabhu Sep 4, 2025
377f181
refactor: update timeline test locators and improve assertions for be…
gcodeprabhu Sep 4, 2025
b2f9c87
fix: adjust performance test timeouts and improve compatibility for F…
gcodeprabhu Sep 4, 2025
8350261
feat: Add customizable toolbar search configuration and position
gcodeprabhu Sep 5, 2025
4319820
refactor: Improve list item layout and styles for better responsivene…
gcodeprabhu Sep 5, 2025
e52e1b0
Add comprehensive tests for timeline props and related test data
gcodeprabhu Sep 6, 2025
77d6318
feat: Complete demo site redesign with modern UX and full-width layout
gcodeprabhu Sep 7, 2025
70ffdfb
feat: Enhance toolbar search configuration and update documentation
gcodeprabhu Sep 7, 2025
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
127 changes: 127 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Playwright Tests
on:
push:
branches: [ main, master, develop ]
pull_request:
branches: [ main, master, develop ]
workflow_dispatch:

jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
browser: [chromium, firefox, webkit]
shard: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v2
with:
version: 8

- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install Playwright Browsers
run: pnpm exec playwright install --with-deps ${{ matrix.browser }}

- name: Run Playwright tests
run: pnpm exec playwright test --project=${{ matrix.browser }} --shard=${{ matrix.shard }}/4
env:
CI: true

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-results-${{ matrix.browser }}-${{ matrix.shard }}
path: |
playwright-report/
test-results/
retention-days: 30

test-components:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v2
with:
version: 8

- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Install Playwright
run: pnpm exec playwright install --with-deps chromium

- name: Run component tests
run: pnpm exec playwright test -c playwright-ct.config.ts

- name: Upload component test results
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-ct-results
path: |
playwright-ct-report/
test-results/
retention-days: 30

report:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
needs: [test, test-components]
if: always()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
with:
path: all-results
pattern: playwright-*

- name: Merge reports
run: |
npx playwright merge-reports --reporter html ./all-results/playwright-results-*

- name: Upload merged report
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 30

- name: Deploy to GitHub Pages
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./playwright-report
Comment on lines +88 to +115

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,32 @@
# testing
# /coverage

# Playwright test artifacts and reports
/test-results/
/playwright-report/
/playwright-ct-report/
/playwright/.cache/
*.trace.zip
/tests/**/trace*.zip
/tests/**/*.trace.zip
/tests/fixtures/auth.json
/tests/downloads/
/tests/temp/

# Playwright screenshots (keep baseline, ignore test-generated)
/tests/**/*-actual.png
/tests/**/*-diff.png
/tests/**/*-previous.png
/tests/**/screenshot*.png

# Additional Playwright artifacts
/tests/results/
/tests/output/
/blob-report/
*.har
/test-results-*
*-lighthouse-report.html

# production
/build

Expand Down Expand Up @@ -35,7 +61,9 @@ cache
.idea
.tmp

# Legacy Cypress files (can be removed after full migration)
cypress/videos
cypress/screenshots

.scannerwork
# sonar-project.properties
Expand Down
103 changes: 103 additions & 0 deletions PLAYWRIGHT_PACKAGE_SCRIPTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# Playwright Package.json Updates

Add these scripts to your package.json:

```json
{
"scripts": {
"test:e2e": "playwright test",
"test:e2e:debug": "playwright test --debug",
"test:e2e:ui": "playwright test --ui",
"test:e2e:headed": "playwright test --headed",
"test:e2e:chrome": "playwright test --project=chromium",
"test:e2e:firefox": "playwright test --project=firefox",
"test:e2e:webkit": "playwright test --project=webkit",
"test:e2e:mobile": "playwright test --project='Mobile Chrome' --project='Mobile Safari'",
"test:ct": "playwright test -c playwright-ct.config.ts",
"test:ct:ui": "playwright test -c playwright-ct.config.ts --ui",
"test:report": "playwright show-report",
"test:trace": "playwright show-trace",
"test:install": "playwright install --with-deps",
"test:codegen": "playwright codegen",
"test:update-snapshots": "playwright test --update-snapshots",
"test:ci": "playwright test --reporter=github --reporter=html",
"test:shard": "playwright test --shard=$SHARD"
},
"devDependencies": {
"@playwright/test": "^1.40.0",
"@playwright/experimental-ct-react": "^1.40.0"
}
}
```

## Installation Commands

```bash
# Install Playwright
pnpm add -D @playwright/test @playwright/experimental-ct-react

# Install browsers
pnpm exec playwright install --with-deps

# Or install specific browsers only
pnpm exec playwright install chromium firefox webkit
```

## Running Tests

```bash
# Run all E2E tests
pnpm test:e2e

# Run in UI mode (recommended for development)
pnpm test:e2e:ui

# Run component tests
pnpm test:ct

# Run specific test file
pnpm test:e2e tests/e2e/timeline-horizontal.spec.ts

# Run tests in headed mode
pnpm test:e2e:headed

# Run only Chrome tests
pnpm test:e2e:chrome

# Generate new tests with codegen
pnpm test:codegen http://localhost:4444

# Update visual snapshots
pnpm test:update-snapshots

# View test report
pnpm test:report

# View trace file
pnpm test:trace trace.zip
```

## Debugging

```bash
# Debug mode with Playwright Inspector
pnpm test:e2e:debug

# Run with verbose logging
DEBUG=pw:api pnpm test:e2e

# Run single test in debug mode
pnpm test:e2e:debug -g "should display correct number of timeline items"
```

## CI/CD

```bash
# Run in CI mode with GitHub Actions reporter
pnpm test:ci

# Run with sharding (for parallel CI)
SHARD=1/4 pnpm test:shard
SHARD=2/4 pnpm test:shard
# etc...
```
Loading
Loading