Skip to content
Open
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
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
steps:
- uses: actions/checkout@v6

- uses: voidzero-dev/setup-vp@v1
- uses: voidzero-dev/setup-vp@v1.21.1
with:
node-version-file: .node-version
run-install: true
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
steps:
- uses: actions/checkout@v6

- uses: voidzero-dev/setup-vp@v1
- uses: voidzero-dev/setup-vp@v1.21.1
with:
node-version-file: .node-version
run-install: true
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,4 @@ target
release
!src-tauri/release
.tanstack
.vitest/
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,5 @@ These commands map to their corresponding tools. For example, `vp dev --port 300

- [ ] Run `vp install` after pulling remote changes and before getting started.
- [ ] Run `vp check` and `vp test` to validate changes.

<!--VITE PLUS END-->
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,18 @@
"@types/react-dom": "19.2.3",
"@types/semver": "7.7.1",
"@vitejs/plugin-react": "6.0.2",
"@vitest/browser-playwright": "catalog:",
"babel-plugin-react-compiler": "1.0.0",
"lightningcss": "1.32.0",
"playwright": "1.60.0",
"simple-git-hooks": "2.13.1",
"typescript": "6.0.3",
"vite": "npm:@voidzero-dev/vite-plus-core@^0.1.22",
"unplugin": "2.3.11",
"vite": "catalog:",
"vite-plugin-svgr": "5.2.0",
"vite-plus": "catalog:",
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.22",
"vitest-browser-react": "2.2.0"
"vitest": "catalog:",
"vitest-browser-react": "2.3.0"
},
"simple-git-hooks": {
"pre-commit": "vp run gen:translations && git add src/translations"
Expand Down
1,530 changes: 1,126 additions & 404 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

22 changes: 17 additions & 5 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,28 @@ allowBuilds:

# Vite+ setup
catalog:
vite: npm:@voidzero-dev/vite-plus-core@latest
vite-plus: 0.1.22
vitest: npm:@voidzero-dev/vite-plus-test@latest
vite: npm:@voidzero-dev/[email protected]
vite-plus: 1.1.0
vitest: 5.0.3
'@vitest/browser-playwright': 5.0.3
overrides:
vite: 'catalog:'
vitest: 'catalog:'
vite@*: 'catalog:'
vitest@*: 'catalog:'
peerDependencyRules:
allowAny:
- vite
- vitest
allowedVersions:
vite: '*'
vitest: '*'
minimumReleaseAgeExclude:
- vite-plus
- '@voidzero-dev/*'
- oxlint
- '@oxlint/*'
- oxlint-tsgolint
- '@oxlint-tsgolint/*'
- oxfmt
- '@oxfmt/*'
- vitest
- '@vitest/*'
2 changes: 1 addition & 1 deletion src/__tests__/e2e-helpers.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { i18n } from '@lingui/core';
import { beforeEach, vi } from 'vite-plus/test';
import { page } from 'vite-plus/test/context';
import { render } from 'vitest-browser-react';
import { page } from 'vitest/context';

import { MOCK_CONFIG } from '../lib/__mocks__/bridge-config.ts';
import { messages } from '../translations/en.po';
Expand Down
32 changes: 16 additions & 16 deletions src/__tests__/library.test-e2e.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ test('Tracks should be selectable via keyboard only (after a single selection)',
const secondTrack = getTrackAt(1);
const thirdTrack = getTrackAt(2);

await expect.element(firstTrack).toHaveTextContent('Whiskey Blues');
await expect.element(secondTrack).toHaveTextContent('Majestic Blues');
await expect.element(thirdTrack).toHaveTextContent('Romantic Blues');
await expect.element(firstTrack).toMatchTextContent('Whiskey Blues');
await expect.element(secondTrack).toMatchTextContent('Majestic Blues');
await expect.element(thirdTrack).toMatchTextContent('Romantic Blues');

await firstTrack.click();
await expect.element(firstTrack).toHaveAttribute('aria-selected', 'true');
Expand Down Expand Up @@ -158,7 +158,7 @@ test('Search should filter tracks in the library', async () => {
await expect.element(getTrackAt(0)).not.toBeInTheDocument();
await expect
.element(page.getByRole('status'))
.toHaveTextContent('Your search returned no results');
.toMatchTextContent('Your search returned no results');

// Clicking the search clear button should clear the search
await searchClear.click();
Expand All @@ -180,25 +180,25 @@ test('Column headers should sort tracks in the library', async () => {
const track2content = 'Romantic Blues05:00Jean-Paul-VPixabayblues';

// By default, we sort by artist, album year, album name, track number, disk number
await expect.element(firstTrack).toHaveTextContent(track0content);
await expect.element(secondTrack).toHaveTextContent(track1content);
await expect.element(thirdTrack).toHaveTextContent(track2content);
await expect.element(firstTrack).toMatchTextContent(track0content);
await expect.element(secondTrack).toMatchTextContent(track1content);
await expect.element(thirdTrack).toMatchTextContent(track2content);

// Clicking on the title header should change the sorting to Descending by Artist name
await getSortButton('Artist').click();
await expect.element(firstTrack).toHaveTextContent(track2content);
await expect.element(secondTrack).toHaveTextContent(track1content);
await expect.element(thirdTrack).toHaveTextContent(track0content);
await expect.element(firstTrack).toMatchTextContent(track2content);
await expect.element(secondTrack).toMatchTextContent(track1content);
await expect.element(thirdTrack).toMatchTextContent(track0content);

// Clicking again should change the sorting back to Ascending by Artist name
await getSortButton('Artist').click();
await expect.element(firstTrack).toHaveTextContent(track0content);
await expect.element(secondTrack).toHaveTextContent(track1content);
await expect.element(thirdTrack).toHaveTextContent(track2content);
await expect.element(firstTrack).toMatchTextContent(track0content);
await expect.element(secondTrack).toMatchTextContent(track1content);
await expect.element(thirdTrack).toMatchTextContent(track2content);

// Let's sort by title as well
await getSortButton('Title').click();
await expect.element(firstTrack).toHaveTextContent(track1content);
await expect.element(secondTrack).toHaveTextContent(track2content);
await expect.element(thirdTrack).toHaveTextContent(track0content);
await expect.element(firstTrack).toMatchTextContent(track1content);
await expect.element(secondTrack).toMatchTextContent(track2content);
await expect.element(thirdTrack).toMatchTextContent(track0content);
});
4 changes: 2 additions & 2 deletions src/__tests__/player.test-e2e.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ test('Double click on a track should play it and display its metadata', async ()
.toBeVisible();
await expect
.element(page.getByRole('banner'))
.toHaveTextContent('Captain_Sleepy — Another Album');
.toMatchTextContent('Captain_Sleepy — Another Album');

// Click on another one
await getTrackByName(/Romantic Blues/).dblClick();
Expand All @@ -53,7 +53,7 @@ test('Double click on a track should play it and display its metadata', async ()
.toBeVisible();
await expect
.element(page.getByRole('banner'))
.toHaveTextContent('Jean-Paul-V — Pixabay');
.toMatchTextContent('Jean-Paul-V — Pixabay');

// Pause
await page.getByRole('button', { name: 'Pause' }).click();
Expand Down
4 changes: 2 additions & 2 deletions src/__tests__/translations.test-e2e.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ test('The language selector should update the UI', async () => {
await expect.element(viewMessage).toBeVisible();
await expect
.element(viewMessage)
.toHaveTextContent(
.toMatchTextContent(
'There is no music in your libraryyou can add your music here',
);

Expand All @@ -27,7 +27,7 @@ test('The language selector should update the UI', async () => {
.click();
await expect
.element(viewMessage)
.toHaveTextContent(
.toMatchTextContent(
'Votre bibliothèque est videvous pouvez ajouter votre musique ici',
);
});