1- import * as hanbi from 'hanbi' ;
2- import { expect } from 'chai' ;
3- import portfinder from 'portfinder' ;
4- import path from 'path' ;
5-
6- import { BrowserLauncher } from '../../../src/browser-launcher/BrowserLauncher.js' ;
7- import { TestRunnerCoreConfig } from '../../../src/config/TestRunnerCoreConfig.js' ;
8- import { TestRunner } from '../../../src/runner/TestRunner.js' ;
9- import { Logger } from '../../../src/logger/Logger.js' ;
10- import { SESSION_STATUS } from '../../../src/test-session/TestSessionStatus.js' ;
11- import { TestRunnerGroupConfig } from '../../../src/index.js' ;
1+ import assert from 'node:assert/strict' ;
2+ import path from 'node:path' ;
3+ import { describe , it , mock } from 'node:test' ;
124
13- interface BrowserStubs {
14- stop : hanbi . Stub < Exclude < BrowserLauncher [ 'stop' ] , undefined > > ;
15- startDebugSession : hanbi . Stub < BrowserLauncher [ 'startDebugSession' ] > ;
16- startSession : hanbi . Stub < BrowserLauncher [ 'startSession' ] > ;
17- stopSession : hanbi . Stub < BrowserLauncher [ 'stopSession' ] > ;
18- isActive : hanbi . Stub < BrowserLauncher [ 'isActive' ] > ;
19- getBrowserUrl : hanbi . Stub < BrowserLauncher [ 'getBrowserUrl' ] > ;
20- }
5+ import portfinder from 'portfinder' ;
216
22- function createBrowserStub ( ) : [ BrowserStubs , BrowserLauncher ] {
23- const spies = {
24- stop : hanbi . spy ( ) ,
25- getBrowserUrl : hanbi . spy ( ) ,
26- startDebugSession : hanbi . spy ( ) ,
27- startSession : hanbi . spy ( ) ,
28- stopSession : hanbi . spy ( ) ,
29- isActive : hanbi . spy ( ) ,
7+ import type { BrowserLauncher } from '../../../dist/browser-launcher/BrowserLauncher.js' ;
8+ import type { TestRunnerCoreConfig } from '../../../dist/config/TestRunnerCoreConfig.js' ;
9+ import { TestRunner } from '../../../dist/runner/TestRunner.js' ;
10+ import type { Logger } from '../../../dist/logger/Logger.js' ;
11+ import { SESSION_STATUS } from '../../../dist/test-session/TestSessionStatus.js' ;
12+ import type { TestRunnerGroupConfig } from '../../../dist/index.js' ;
13+
14+ function createBrowserStub ( ) : BrowserLauncher {
15+ return {
16+ name : 'myBrowser' ,
17+ type : 'myBrowser' ,
18+ stop : mock . fn ( ( ) => Promise . resolve ( ) ) ,
19+ getBrowserUrl : mock . fn ( ( ) => '' ) ,
20+ startDebugSession : mock . fn ( ( ) => Promise . resolve ( ) ) ,
21+ startSession : mock . fn ( ( ) => Promise . resolve ( ) ) ,
22+ stopSession : mock . fn ( ( ) => Promise . resolve ( { } ) ) ,
23+ isActive : mock . fn ( ( ) => true ) ,
3024 } ;
31- spies . stop . returns ( Promise . resolve ( ) ) ;
32- spies . getBrowserUrl . returns ( '' ) ;
33- spies . startDebugSession . returns ( Promise . resolve ( ) ) ;
34- spies . startSession . returns ( Promise . resolve ( ) ) ;
35- spies . stopSession . returns ( Promise . resolve ( { } ) ) ;
36- spies . isActive . returns ( true ) ;
37- return [
38- spies ,
39- {
40- name : 'myBrowser' ,
41- type : 'myBrowser' ,
42- stop : spies . stop . handler ,
43- getBrowserUrl : spies . getBrowserUrl . handler ,
44- startDebugSession : spies . startDebugSession . handler ,
45- startSession : spies . startSession . handler ,
46- stopSession : spies . stopSession . handler ,
47- isActive : spies . isActive . handler ,
48- } ,
49- ] ;
5025}
5126
5227const logger : Logger = {
@@ -67,15 +42,15 @@ async function createTestRunner(
6742 port : 9000 + Math . floor ( Math . random ( ) * 1000 ) ,
6843 } ) ;
6944
70- const [ browserStubs , browser ] = createBrowserStub ( ) ;
45+ const browser = createBrowserStub ( ) ;
7146
72- console . log ( path . resolve ( __dirname , '..' , '..' , '..' , '..' , '..' ) ) ;
47+ console . log ( path . resolve ( import . meta . dirname , '..' , '..' , '..' , '..' , '..' ) ) ;
7348
7449 const config : TestRunnerCoreConfig = {
75- files : [ path . resolve ( __dirname , '..' , '..' , 'fixtures' , 'a.test.js' ) ] ,
50+ files : [ path . resolve ( import . meta . dirname , '..' , '..' , 'fixtures' , 'a.test.js' ) ] ,
7651 reporters : [ ] ,
7752 logger,
78- rootDir : path . resolve ( __dirname , '..' , '..' , '..' , '..' , '..' ) ,
53+ rootDir : path . resolve ( import . meta . dirname , '..' , '..' , '..' , '..' , '..' ) ,
7954 testFramework : { path : 'my-framework.js' } ,
8055 concurrentBrowsers : 2 ,
8156 concurrency : 10 ,
@@ -94,24 +69,24 @@ async function createTestRunner(
9469 ...extraConfig ,
9570 } ;
9671 const runner = new TestRunner ( config , groupConfigs ) ;
97- return { runner, browser, browserStubs } ;
72+ return { runner, browser } ;
9873}
9974
10075describe ( 'TestRunner' , function ( ) {
10176 it ( 'can run a single test file' , async ( ) => {
102- const { runner, browserStubs } = await createTestRunner ( ) ;
77+ const { runner, browser } = await createTestRunner ( ) ;
10378
10479 await runner . start ( ) ;
105- expect ( runner . started ) . to . equal ( true , 'runner is started' ) ;
106- expect ( browserStubs . startSession . callCount ) . to . equal ( 1 ) ;
80+ assert . equal ( runner . started , true , 'runner is started' ) ;
81+ assert . equal ( browser . startSession . mock . callCount ( ) , 1 ) ;
10782
10883 const sessions = Array . from ( runner . sessions . all ( ) ) ;
109- expect ( sessions . length ) . to . equal ( 1 , 'one session is created' ) ;
84+ assert . equal ( sessions . length , 1 , 'one session is created' ) ;
11085 await runner . stop ( ) ;
11186 } ) ;
11287
11388 it ( 'closes test runner for a successful test' , async ( ) => {
114- const { runner, browserStubs } = await createTestRunner ( ) ;
89+ const { runner, browser } = await createTestRunner ( ) ;
11590 let resolveStopped : ( passed : boolean ) => void ;
11691 const stopped = new Promise < boolean > ( resolve => {
11792 resolveStopped = resolve ;
@@ -130,13 +105,13 @@ describe('TestRunner', function () {
130105
131106 const passed = await stopped ;
132107
133- expect ( browserStubs . stopSession . callCount ) . to . equal ( 1 , 'browser session is stopped' ) ;
134- expect ( browserStubs . stop . callCount ) . to . equal ( 1 , 'browser is stopped' ) ;
135- expect ( passed ) . to . equal ( true , 'test runner quits with true' ) ;
108+ assert . equal ( browser . stopSession . mock . callCount ( ) , 1 , 'browser session is stopped' ) ;
109+ assert . equal ( browser . stop . mock . callCount ( ) , 1 , 'browser is stopped' ) ;
110+ assert . equal ( passed , true , 'test runner quits with true' ) ;
136111 } ) ;
137112
138113 it ( 'closes test runner for a failed test' , async ( ) => {
139- const { runner, browserStubs } = await createTestRunner ( ) ;
114+ const { runner, browser } = await createTestRunner ( ) ;
140115 let resolveStopped : ( passed : boolean ) => void ;
141116 const stopped = new Promise < boolean > ( resolve => {
142117 resolveStopped = resolve ;
@@ -154,28 +129,28 @@ describe('TestRunner', function () {
154129 runner . sessions . updateStatus ( { ...sessions [ 0 ] , passed : false } , SESSION_STATUS . TEST_FINISHED ) ;
155130 const passed = await stopped ;
156131
157- expect ( browserStubs . stopSession . callCount ) . to . equal ( 1 , 'browser session is stopped' ) ;
158- expect ( browserStubs . stop . callCount ) . to . equal ( 1 , 'browser is stopped' ) ;
159- expect ( passed ) . to . equal ( false , 'test runner quits with false' ) ;
132+ assert . equal ( browser . stopSession . mock . callCount ( ) , 1 , 'browser session is stopped' ) ;
133+ assert . equal ( browser . stop . mock . callCount ( ) , 1 , 'browser is stopped' ) ;
134+ assert . equal ( passed , false , 'test runner quits with false' ) ;
160135 } ) ;
161136
162137 describe ( 'groups' , ( ) => {
163138 it ( 'can create a group in addition to the default group' , async ( ) => {
164139 const { runner } = await createTestRunner ( undefined , [
165140 {
166141 name : 'a' ,
167- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-a' , '*.test.js' ) ] ,
142+ files : [ path . join ( import . meta . dirname , '..' , '..' , 'fixtures' , 'group-a' , '*.test.js' ) ] ,
168143 } ,
169144 ] ) ;
170145
171146 const sessions = Array . from ( runner . sessions . all ( ) ) ;
172- expect ( sessions . length ) . to . equal ( 3 ) ;
173- expect ( sessions . filter ( s => s . group . name === 'default' ) . length ) . to . equal ( 1 ) ;
174- expect ( sessions . filter ( s => s . group . name === 'a' ) . length ) . to . equal ( 2 ) ;
147+ assert . equal ( sessions . length , 3 ) ;
148+ assert . equal ( sessions . filter ( s => s . group . name === 'default' ) . length , 1 ) ;
149+ assert . equal ( sessions . filter ( s => s . group . name === 'a' ) . length , 2 ) ;
175150 } ) ;
176151
177152 it ( 'can create a group with a custom browser, inheriting test files' , async ( ) => {
178- const [ , groupBrowser ] = createBrowserStub ( ) ;
153+ const groupBrowser = createBrowserStub ( ) ;
179154 const { browser, runner } = await createTestRunner ( undefined , [
180155 {
181156 name : 'a' ,
@@ -184,15 +159,15 @@ describe('TestRunner', function () {
184159 ] ) ;
185160
186161 const sessions = Array . from ( runner . sessions . all ( ) ) ;
187- expect ( sessions . length ) . to . equal ( 2 ) ;
188- expect ( sessions . filter ( s => s . group . name === 'default' ) . length ) . to . equal ( 1 ) ;
189- expect ( sessions . filter ( s => s . group . name === 'a' ) . length ) . to . equal ( 1 ) ;
162+ assert . equal ( sessions . length , 2 ) ;
163+ assert . equal ( sessions . filter ( s => s . group . name === 'default' ) . length , 1 ) ;
164+ assert . equal ( sessions . filter ( s => s . group . name === 'a' ) . length , 1 ) ;
190165
191166 const sessionDefault = sessions . find ( s => s . group . name === 'default' ) ! ;
192167 const sessionA = sessions . find ( s => s . group . name === 'a' ) ! ;
193- expect ( sessionDefault . testFile ) . to . equal ( sessionA . testFile ) ;
194- expect ( sessionDefault . browser ) . to . equal ( browser ) ;
195- expect ( sessionA . browser ) . to . equal ( groupBrowser ) ;
168+ assert . equal ( sessionDefault . testFile , sessionA . testFile ) ;
169+ assert . equal ( sessionDefault . browser , browser ) ;
170+ assert . equal ( sessionA . browser , groupBrowser ) ;
196171 } ) ;
197172
198173 it ( 'can create test groups inheriting browser' , async ( ) => {
@@ -203,49 +178,53 @@ describe('TestRunner', function () {
203178 [
204179 {
205180 name : 'a' ,
206- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-a' , '*.test.js' ) ] ,
181+ files : [ path . join ( import . meta . dirname , '..' , '..' , 'fixtures' , 'group-a' , '*.test.js' ) ] ,
207182 } ,
208183 {
209184 name : 'b' ,
210- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-b' , '*.test.js' ) ] ,
185+ files : [ path . join ( import . meta . dirname , '..' , '..' , 'fixtures' , 'group-b' , '*.test.js' ) ] ,
211186 } ,
212187 {
213188 name : 'c' ,
214- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-c' , '*.test.js' ) ] ,
189+ files : [ path . join ( import . meta . dirname , '..' , '..' , 'fixtures' , 'group-c' , '*.test.js' ) ] ,
215190 } ,
216191 ] ,
217192 ) ;
218193
219194 const sessions = Array . from ( runner . sessions . all ( ) ) ;
220- expect ( sessions . length ) . to . equal ( 6 ) ;
221- expect ( sessions . filter ( s => s . group . name === 'a' ) . length ) . to . equal ( 2 ) ;
222- expect ( sessions . filter ( s => s . group . name === 'b' ) . length ) . to . equal ( 2 ) ;
223- expect ( sessions . filter ( s => s . group . name === 'c' ) . length ) . to . equal ( 2 ) ;
195+ assert . equal ( sessions . length , 6 ) ;
196+ assert . equal ( sessions . filter ( s => s . group . name === 'a' ) . length , 2 ) ;
197+ assert . equal ( sessions . filter ( s => s . group . name === 'b' ) . length , 2 ) ;
198+ assert . equal ( sessions . filter ( s => s . group . name === 'c' ) . length , 2 ) ;
224199 } ) ;
225200
226201 it ( 'can create test groups with custom browsers' , async ( ) => {
227- const [ , browserB ] = createBrowserStub ( ) ;
202+ const browserB = createBrowserStub ( ) ;
228203 const { browser, runner } = await createTestRunner (
229204 {
230205 files : undefined ,
231206 } ,
232207 [
233208 {
234209 name : 'a' ,
235- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-a' , 'a-1.test.js' ) ] ,
210+ files : [
211+ path . join ( import . meta. dirname , '..' , '..' , 'fixtures' , 'group-a' , 'a-1.test.js' ) ,
212+ ] ,
236213 } ,
237214 {
238215 name : 'b' ,
239216 browsers : [ browserB ] ,
240- files : [ path . join ( __dirname , '..' , '..' , 'fixtures' , 'group-b' , 'b-1.test.js' ) ] ,
217+ files : [
218+ path . join ( import . meta. dirname , '..' , '..' , 'fixtures' , 'group-b' , 'b-1.test.js' ) ,
219+ ] ,
241220 } ,
242221 ] ,
243222 ) ;
244223
245224 const sessions = Array . from ( runner . sessions . all ( ) ) ;
246- expect ( sessions . length ) . to . equal ( 2 ) ;
247- expect ( sessions . find ( s => s . group . name === 'a' ) ! . browser ) . to . equal ( browser ) ;
248- expect ( sessions . find ( s => s . group . name === 'b' ) ! . browser ) . to . equal ( browserB ) ;
225+ assert . equal ( sessions . length , 2 ) ;
226+ assert . equal ( sessions . find ( s => s . group . name === 'a' ) ! . browser , browser ) ;
227+ assert . equal ( sessions . find ( s => s . group . name === 'b' ) ! . browser , browserB ) ;
249228 } ) ;
250229
251230 it ( 'can ignore files via string[] globs' , async ( ) => {
@@ -255,8 +234,9 @@ describe('TestRunner', function () {
255234 } ) ;
256235
257236 const sessions = Array . from ( runner . sessions . all ( ) ) ;
258- const allFiles = sessions . flatMap ( x => path . relative ( __dirname , x . testFile ) ) ;
259- expect ( allFiles ) . to . deep . equal (
237+ const allFiles = sessions . flatMap ( x => path . relative ( import . meta. dirname , x . testFile ) ) ;
238+ assert . deepEqual (
239+ allFiles ,
260240 [
261241 '../../fixtures/a.test.js' ,
262242 '../../fixtures/group-a/a-1.test.js' ,
0 commit comments