1- import { test , expect } from '@/e2e/helper' ;
1+ import { defer } from '@/e2e/deferred' ;
2+ import { expect , test } from '@/e2e/helper' ;
3+ import { loadFixtures } from '@crates-io/msw/fixtures' ;
4+ import { http , HttpResponse } from 'msw' ;
25
36test . describe ( 'Acceptance | front page' , { tag : '@acceptance' } , ( ) => {
47 test . use ( { locale : 'en' } ) ;
5- test ( 'visiting /' , async ( { page, mirage, percy, a11y } ) => {
6- await mirage . addHook ( server => {
7- server . loadFixtures ( ) ;
8- } ) ;
8+ test ( 'visiting /' , async ( { page, msw, percy, a11y } ) => {
9+ loadFixtures ( msw . db ) ;
910
1011 await page . goto ( '/' ) ;
1112
@@ -19,10 +20,10 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
1920 await expect ( page . locator ( '[data-test-total-downloads] [data-test-value]' ) ) . toHaveText ( '143,345' ) ;
2021 await expect ( page . locator ( '[data-test-total-crates] [data-test-value]' ) ) . toHaveText ( '23' ) ;
2122
22- await expect ( page . locator ( '[data-test-new-crates] [data-test-crate-link="0"]' ) ) . toHaveText ( 'Inflector v1.0.0' ) ;
23+ await expect ( page . locator ( '[data-test-new-crates] [data-test-crate-link="0"]' ) ) . toHaveText ( 'serde v1.0.0' ) ;
2324 await expect ( page . locator ( '[data-test-new-crates] [data-test-crate-link="0"]' ) ) . toHaveAttribute (
2425 'href' ,
25- '/crates/Inflector ' ,
26+ '/crates/serde ' ,
2627 ) ;
2728
2829 await expect ( page . locator ( '[data-test-most-downloaded] [data-test-crate-link="0"]' ) ) . toHaveText ( 'serde' ) ;
@@ -41,22 +42,18 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
4142 await a11y . audit ( ) ;
4243 } ) ;
4344
44- test ( 'error handling' , async ( { page, mirage } ) => {
45- await mirage . addHook ( server => {
46- // Snapshot the routes so we can restore it later
47- globalThis . _routes = server . _config . routes ;
48- server . get ( '/api/v1/summary' , { } , 500 ) ;
49- } ) ;
45+ test ( 'error handling' , async ( { page, msw } ) => {
46+ await msw . worker . use ( http . get ( '/api/v1/summary' , ( ) => HttpResponse . json ( { } , { status : 500 } ) ) ) ;
5047
5148 await page . goto ( '/' ) ;
5249 await expect ( page . locator ( '[data-test-lists]' ) ) . toHaveCount ( 0 ) ;
5350 await expect ( page . locator ( '[data-test-error-message]' ) ) . toBeVisible ( ) ;
5451 await expect ( page . locator ( '[data-test-try-again-button]' ) ) . toBeEnabled ( ) ;
5552
56- await page . evaluate ( ( ) => {
57- globalThis . deferred = require ( 'rsvp' ) . defer ( ) ;
58- server . get ( '/api/v1/summary' , ( ) => globalThis . deferred . promise ) ;
59- } ) ;
53+ await msw . worker . resetHandlers ( ) ;
54+
55+ let deferred = defer ( ) ;
56+ msw . worker . use ( http . get ( '/api/v1/summary' , ( ) => deferred . promise ) ) ;
6057
6158 const button = page . locator ( '[data-test-try-again-button]' ) ;
6259 await button . click ( ) ;
@@ -65,12 +62,8 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
6562 await expect ( page . locator ( '[data-test-error-message]' ) ) . toBeVisible ( ) ;
6663 await expect ( page . locator ( '[data-test-try-again-button]' ) ) . toBeDisabled ( ) ;
6764
68- await page . evaluate ( async ( ) => {
69- // Restore the routes
70- globalThis . _routes . call ( server ) ;
71- const data = await globalThis . fetch ( '/api/v1/summary' ) . then ( r => r . json ( ) ) ;
72- return globalThis . deferred . resolve ( data ) ;
73- } ) ;
65+ deferred . resolve ( ) ;
66+
7467 await expect ( page . locator ( '[data-test-lists]' ) ) . toBeVisible ( ) ;
7568 await expect ( page . locator ( '[data-test-error-message]' ) ) . toHaveCount ( 0 ) ;
7669 await expect ( page . locator ( '[data-test-try-again-button]' ) ) . toHaveCount ( 0 ) ;
0 commit comments