11import ansis from 'ansis' ;
22import cliSpinners from 'cli-spinners' ;
3- import logSymbols from 'log-symbols' ;
43import os from 'node:os' ;
4+ import process from 'node:process' ;
55import type { MockInstance } from 'vitest' ;
66import { Logger } from './logger.js' ;
77
@@ -10,15 +10,26 @@ vi.mock('ora', async (): Promise<typeof import('ora')> => {
1010 const exports = await vi . importActual < typeof import ( 'ora' ) > ( 'ora' ) ;
1111 return {
1212 ...exports ,
13- default : options =>
14- exports . default ( {
13+ default : options => {
14+ const spinner = exports . default ( {
1515 // skip cli-cursor package
1616 hideCursor : false ,
1717 // skip is-interactive package
1818 isEnabled : process . env [ 'CI' ] !== 'true' ,
19+ // skip is-unicode-supported package
20+ spinner : cliSpinners . dots ,
1921 // preserve other options
2022 ...( typeof options === 'string' ? { text : options } : options ) ,
21- } ) ,
23+ } ) ;
24+ // skip log-symbols package
25+ vi . spyOn ( spinner , 'succeed' ) . mockImplementation ( text =>
26+ spinner . stopAndPersist ( { text, symbol : ansis . green ( '✔' ) } ) ,
27+ ) ;
28+ vi . spyOn ( spinner , 'fail' ) . mockImplementation ( text =>
29+ spinner . stopAndPersist ( { text, symbol : ansis . red ( '✖' ) } ) ,
30+ ) ;
31+ return spinner ;
32+ } ,
2233 } ;
2334} ) ;
2435
@@ -308,7 +319,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
308319 await expect ( task ) . resolves . toBeUndefined ( ) ;
309320
310321 expect ( output ) . toBe (
311- `${ logSymbols . success } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) } \n` ,
322+ `${ ansis . green ( '✔' ) } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) } \n` ,
312323 ) ;
313324 } ) ;
314325
@@ -322,7 +333,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
322333 await expect ( task ) . rejects . toThrow ( 'GraphQL error: Invalid API key' ) ;
323334
324335 expect ( output ) . toBe (
325- `${ logSymbols . error } Uploading report to portal → ${ ansis . red ( 'Error: GraphQL error: Invalid API key' ) } \n` ,
336+ `${ ansis . red ( '✖' ) } Uploading report to portal → ${ ansis . red ( 'Error: GraphQL error: Invalid API key' ) } \n` ,
326337 ) ;
327338 } ) ;
328339
@@ -341,7 +352,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
341352 expect ( output ) . toBe (
342353 `
343354- Uploading report to portal
344- ${ logSymbols . success } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) }
355+ ${ ansis . green ( '✔' ) } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) }
345356` . trimStart ( ) ,
346357 ) ;
347358 } ) ;
@@ -361,7 +372,7 @@ ${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
361372
362373 expect ( output ) . toBe (
363374 `
364- ${ logSymbols . error } Uploading report to portal ${ ansis . red . bold ( '[SIGINT]' ) }
375+ ${ ansis . red ( '✖' ) } Uploading report to portal ${ ansis . red . bold ( '[SIGINT]' ) }
365376
366377${ ansis . red . bold ( 'Cancelled by SIGINT' ) }
367378` . trimStart ( ) ,
@@ -390,7 +401,7 @@ ${ansis.red.bold('Cancelled by SIGINT')}
390401
391402 expect ( output ) . toBe (
392403 `
393- ${ logSymbols . success } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) }
404+ ${ ansis . green ( '✔' ) } Uploaded report to portal ${ ansis . gray ( '(42 ms)' ) }
394405 ${ ansis . gray ( 'Sent request to Portal API' ) }
395406 ${ ansis . gray ( 'Received response from Portal API' ) }
396407` . trimStart ( ) ,
@@ -417,7 +428,7 @@ ${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
417428
418429 expect ( output ) . toBe (
419430 `
420- ${ logSymbols . error } Uploading report to portal → ${ ansis . red ( 'Error: GraphQL error: Invalid API key' ) }
431+ ${ ansis . red ( '✖' ) } Uploading report to portal → ${ ansis . red ( 'Error: GraphQL error: Invalid API key' ) }
421432 ${ ansis . gray ( 'Sent request to Portal API' ) }
422433 ${ ansis . gray ( 'Received response from Portal API' ) }
423434` . trimStart ( ) ,
@@ -470,7 +481,7 @@ ${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL e
470481 await expect ( command ) . resolves . toBeUndefined ( ) ;
471482
472483 expect ( output ) . toBe (
473- `${ logSymbols . success } ${ ansis . green ( '$' ) } npx eslint . --format=json ${ ansis . gray ( '(42 ms)' ) } \n` ,
484+ `${ ansis . green ( '✔' ) } ${ ansis . green ( '$' ) } npx eslint . --format=json ${ ansis . gray ( '(42 ms)' ) } \n` ,
474485 ) ;
475486 } ) ;
476487
@@ -489,7 +500,7 @@ ${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL e
489500 await expect ( command ) . rejects . toThrow ( 'Process failed with exit code 1' ) ;
490501
491502 expect ( output ) . toBe (
492- `${ logSymbols . error } ${ ansis . red ( '$' ) } npx eslint . --format=json\n` ,
503+ `${ ansis . red ( '✖' ) } ${ ansis . red ( '$' ) } npx eslint . --format=json\n` ,
493504 ) ;
494505 } ) ;
495506 } ) ;
0 commit comments