test(web): scope home For-You assertions to Playlists section
test-web / test (push) Successful in 33s
test-web / test (push) Successful in 33s
The new hero card on Home renders the For-You playlist twice — once
at the top in the featured row and once in the Playlists carousel.
The two existing assertions that did screen.getByText('For You')
now match both and fail. Wrap each in within(playlistsSection) so
the test targets the carousel render specifically.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
||||
import { render, screen } from '@testing-library/svelte';
|
||||
import { render, screen, within } from '@testing-library/svelte';
|
||||
import { readable } from 'svelte/store';
|
||||
import { emptyLikesMock } from '../test-utils/mocks/likes';
|
||||
import type { Playlist } from '$lib/api/types';
|
||||
@@ -103,7 +103,11 @@ describe('home Playlists section', () => {
|
||||
: readable({ data: emptyPlaylistsResponse, isPending: false, isError: false })
|
||||
);
|
||||
render(Page);
|
||||
expect(screen.getByText('For You')).toBeInTheDocument();
|
||||
// For-You renders twice: once in the new hero card at the top of
|
||||
// Home and once in the Playlists carousel. Scope the assertion
|
||||
// to the Playlists section to avoid the hero collision.
|
||||
const playlistsSection = screen.getByLabelText('Playlists');
|
||||
expect(within(playlistsSection).getByText('For You')).toBeInTheDocument();
|
||||
const placeholders = screen.queryAllByTestId('playlist-placeholder-card');
|
||||
// 1 Discover + 3 Songs-like slots = 4 placeholders alongside the
|
||||
// real For-You tile.
|
||||
@@ -143,7 +147,11 @@ describe('home Playlists section', () => {
|
||||
: readable({ data: emptyPlaylistsResponse, isPending: false, isError: false })
|
||||
);
|
||||
render(Page);
|
||||
expect(screen.getByText('For You')).toBeInTheDocument();
|
||||
// For-You also renders in the hero card; scope to the Playlists
|
||||
// section. The secondary kinds aren't featured in the hero, so
|
||||
// their getByText assertions can stay document-scoped.
|
||||
const playlistsSection = screen.getByLabelText('Playlists');
|
||||
expect(within(playlistsSection).getByText('For You')).toBeInTheDocument();
|
||||
expect(screen.getByText('Deep cuts')).toBeInTheDocument();
|
||||
expect(screen.getByText('New for you')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user