@@ -8,13 +8,37 @@ import sirv from 'sirv'
88import { expect } from 'vitest'
99const { page, html, transitionStart, waitForInnerHTML } = setupPuppeteer ( )
1010
11+ function toSlug ( value : string ) {
12+ return value
13+ . trim ( )
14+ . toLowerCase ( )
15+ . replace ( / [ ^ a - z 0 - 9 ] + / g, '-' )
16+ . replace ( / ^ - + | - + $ / g, '' )
17+ }
18+
19+ function resolveCaseId ( testName : string ) {
20+ const parts = testName
21+ . split ( ' > ' )
22+ . map ( item => item . trim ( ) )
23+ . filter ( Boolean )
24+ const testTitle = parts [ parts . length - 1 ]
25+ if ( ! testTitle ) {
26+ throw new Error ( `[transition-group] Invalid test name: "${ testName } "` )
27+ }
28+ const suiteParts = parts . slice ( 1 , - 1 )
29+ const folderParts = suiteParts . length ? suiteParts : [ parts [ 0 ] ]
30+ const folderPath = folderParts . map ( toSlug ) . join ( '/' )
31+ return `${ folderPath } /${ toSlug ( testTitle ) } `
32+ }
33+
1134describe ( 'vapor transition-group' , ( ) => {
1235 let server : any
13- const port = '8196'
36+ let port = 0
1437 beforeAll ( ( ) => {
1538 server = connect ( )
1639 . use ( sirv ( path . resolve ( import . meta. dirname , '../dist' ) ) )
17- . listen ( port )
40+ . listen ( 0 )
41+ port = server . address ( ) . port
1842 process . on ( 'SIGTERM' , ( ) => server && server . close ( ) )
1943 } )
2044
@@ -23,7 +47,9 @@ describe('vapor transition-group', () => {
2347 } )
2448
2549 beforeEach ( async ( ) => {
26- const baseUrl = `http://localhost:${ port } /transition-group/`
50+ const testName = expect . getState ( ) . currentTestName || ''
51+ const caseId = resolveCaseId ( testName )
52+ const baseUrl = `http://localhost:${ port } /transition-group/?case=${ caseId } `
2753 await page ( ) . goto ( baseUrl )
2854 await page ( ) . waitForSelector ( '#app' )
2955 } )
@@ -408,38 +434,40 @@ describe('vapor transition-group', () => {
408434 E2E_TIMEOUT ,
409435 )
410436
411- test ( 'interop: render vdom component' , async ( ) => {
412- const btnSelector = '.interop > button'
413- const containerSelector = '.interop > div'
437+ describe ( 'interop' , ( ) => {
438+ test ( 'render vdom component' , async ( ) => {
439+ const btnSelector = '.interop > button'
440+ const containerSelector = '.interop > div'
414441
415- expect ( await html ( containerSelector ) ) . toBe (
416- `<div><div>a</div></div>` +
417- `<div><div>b</div></div>` +
418- `<div><div>c</div></div>` ,
419- )
442+ expect ( await html ( containerSelector ) ) . toBe (
443+ `<div><div>a</div></div>` +
444+ `<div><div>b</div></div>` +
445+ `<div><div>c</div></div>` ,
446+ )
420447
421- expect (
422- ( await transitionStart ( btnSelector , containerSelector ) ) . innerHTML ,
423- ) . toBe (
424- `<div class="test-leave-from test-leave-active"><div>a</div></div>` +
425- `<div class="test-move" style=""><div>b</div></div>` +
426- `<div class="test-move" style=""><div>c</div></div>` +
427- `<div class="test-enter-from test-enter-active"><div>d</div></div>` ,
428- )
448+ expect (
449+ ( await transitionStart ( btnSelector , containerSelector ) ) . innerHTML ,
450+ ) . toBe (
451+ `<div class="test-leave-from test-leave-active"><div>a</div></div>` +
452+ `<div class="test-move" style=""><div>b</div></div>` +
453+ `<div class="test-move" style=""><div>c</div></div>` +
454+ `<div class="test-enter-from test-enter-active"><div>d</div></div>` ,
455+ )
429456
430- await waitForInnerHTML (
431- containerSelector ,
432- `<div class="test-leave-active test-leave-to"><div>a</div></div>` +
433- `<div class="test-move" style=""><div>b</div></div>` +
434- `<div class="test-move" style=""><div>c</div></div>` +
435- `<div class="test-enter-active test-enter-to"><div>d</div></div>` ,
436- )
457+ await waitForInnerHTML (
458+ containerSelector ,
459+ `<div class="test-leave-active test-leave-to"><div>a</div></div>` +
460+ `<div class="test-move" style=""><div>b</div></div>` +
461+ `<div class="test-move" style=""><div>c</div></div>` +
462+ `<div class="test-enter-active test-enter-to"><div>d</div></div>` ,
463+ )
437464
438- await waitForInnerHTML (
439- containerSelector ,
440- `<div class="" style=""><div>b</div></div>` +
441- `<div class="" style=""><div>c</div></div>` +
442- `<div class=""><div>d</div></div>` ,
443- )
465+ await waitForInnerHTML (
466+ containerSelector ,
467+ `<div class="" style=""><div>b</div></div>` +
468+ `<div class="" style=""><div>c</div></div>` +
469+ `<div class=""><div>d</div></div>` ,
470+ )
471+ } )
444472 } )
445473} )
0 commit comments