1
1
/// <reference types="cypress" />
2
2
3
- import { logger } from "@replay-cli/shared/logger" ;
4
- import { mixpanelAPI } from "@replay-cli/shared/mixpanel/mixpanelAPI" ;
3
+ import { logError , logInfo } from "@replay-cli/shared/logger" ;
4
+ import { trackEvent } from "@replay-cli/shared/mixpanelClient" ;
5
+ import { waitForExitTasks } from "@replay-cli/shared/process/waitForExitTasks" ;
5
6
import { getRuntimePath } from "@replay-cli/shared/runtime/getRuntimePath" ;
6
- import { setUserAgent } from "@replay-cli/shared/userAgent " ;
7
+ import { initializeSession } from "@replay-cli/shared/session/initializeSession " ;
7
8
import { RecordingEntry , initMetadataFile , warn } from "@replayio/test-utils" ;
8
9
import chalk from "chalk" ;
9
10
import path from "path" ;
@@ -71,7 +72,7 @@ function updateReporters(
71
72
config : Cypress . PluginConfigOptions
72
73
) {
73
74
const { reporter, reporterOptions } = config ;
74
- logger . info ( "UpdateReporters:Started" , { reporter, reporterOptions } ) ;
75
+ logInfo ( "UpdateReporters:Started" , { reporter, reporterOptions } ) ;
75
76
if ( reporter !== "junit" ) {
76
77
return ;
77
78
}
@@ -96,11 +97,11 @@ function onBeforeBrowserLaunch(
96
97
browser : Cypress . Browser ,
97
98
launchOptions : Cypress . BeforeBrowserLaunchOptions
98
99
) {
99
- logger . info ( "OnBeforeBrowserLaunch:Started" , { browser, launchOptions } ) ;
100
+ logInfo ( "OnBeforeBrowserLaunch:Started" , { browser, launchOptions } ) ;
100
101
assertReporter ( cypressReporter ) ;
101
102
cypressReporter . onLaunchBrowser ( browser . family ) ;
102
103
103
- logger . info ( "OnBeforeBrowserLaunch:BrowserLaunching" , { family : browser . family } ) ;
104
+ logInfo ( "OnBeforeBrowserLaunch:BrowserLaunching" , { family : browser . family } ) ;
104
105
105
106
const config = cypressReporter . config ;
106
107
if ( browser . name !== "electron" && config . version && semver . gte ( config . version , "10.9.0" ) ) {
@@ -121,7 +122,7 @@ function onBeforeBrowserLaunch(
121
122
...cypressReporter . getExtraEnv ( ) ,
122
123
} ;
123
124
124
- logger . info ( "OnBeforeBrowserLaunch:BrowserEnvironment" , { replayEnv } ) ;
125
+ logInfo ( "OnBeforeBrowserLaunch:BrowserEnvironment" , { replayEnv } ) ;
125
126
126
127
launchOptions . env = env ;
127
128
}
@@ -158,8 +159,8 @@ async function onAfterRun() {
158
159
} ) ;
159
160
160
161
if ( missingSteps ) {
161
- logger . error ( "OnAfterRun:AfterRunMissingSteps" , { missingSteps } ) ;
162
- mixpanelAPI . trackEvent ( "warning.missing-steps" ) ;
162
+ logError ( "OnAfterRun:AfterRunMissingSteps" , { missingSteps } ) ;
163
+ trackEvent ( "warning.missing-steps" ) ;
163
164
loudWarning (
164
165
"Your tests completed but our plugin did not receive any command events." ,
165
166
"" ,
@@ -169,35 +170,35 @@ async function onAfterRun() {
169
170
) ;
170
171
}
171
172
172
- await logger . close ( ) . catch ( ( ) => { } ) ;
173
+ await waitForExitTasks ( ) ;
173
174
}
174
175
175
176
function onBeforeSpec ( spec : Cypress . Spec ) {
176
- logger . info ( "OnBeforeSpec:Started" , { spec : spec . relative } ) ;
177
+ logInfo ( "OnBeforeSpec:Started" , { spec : spec . relative } ) ;
177
178
assertReporter ( cypressReporter ) ;
178
179
cypressReporter . onBeforeSpec ( spec ) ;
179
180
}
180
181
181
182
function onAfterSpec ( spec : Cypress . Spec , result : CypressCommandLine . RunResult ) {
182
- logger . info ( "OnAfterSpec:Started" , { spec : spec . relative } ) ;
183
+ logInfo ( "OnAfterSpec:Started" , { spec : spec . relative } ) ;
183
184
assertReporter ( cypressReporter ) ;
184
185
return cypressReporter . onAfterSpec ( spec , result ) ;
185
186
}
186
187
187
188
function onReplayTask ( value : any ) {
188
- logger . info ( "OnReplayTask:Started" , { value } ) ;
189
+ logInfo ( "OnReplayTask:Started" , { value } ) ;
189
190
assertReporter ( cypressReporter ) ;
190
191
const reporter = cypressReporter ;
191
192
192
193
if ( ! Array . isArray ( value ) ) return ;
193
194
194
195
value . forEach ( v => {
195
196
if ( isStepEvent ( v ) ) {
196
- logger . info ( "OnReplayTask:ReplayTaskEvent" , { event : v } ) ;
197
+ logInfo ( "OnReplayTask:ReplayTaskEvent" , { event : v } ) ;
197
198
reporter . addStep ( v ) ;
198
199
} else {
199
- logger . error ( "OnReplayTask:ReplayTaskUnexpectedPayload" , { payload : v } ) ;
200
- mixpanelAPI . trackEvent ( "error.replay-task-unexpected-payload" , { payload : v } ) ;
200
+ logError ( "OnReplayTask:ReplayTaskUnexpectedPayload" , { payload : v } ) ;
201
+ trackEvent ( "error.replay-task-unexpected-payload" , { payload : v } ) ;
201
202
}
202
203
} ) ;
203
204
@@ -261,14 +262,8 @@ const plugin = (
261
262
config : Cypress . PluginConfigOptions ,
262
263
options : PluginOptions = { }
263
264
) => {
264
- setUserAgent ( `${ packageName } /${ packageVersion } ` ) ;
265
-
266
- const accessToken = getAuthKey ( config ) ;
267
-
268
- logger . initialize ( packageName , packageVersion ) ;
269
- logger . identify ( accessToken ) ;
270
- mixpanelAPI . initialize ( {
271
- accessToken,
265
+ initializeSession ( {
266
+ accessToken : getAuthKey ( config ) ,
272
267
packageName,
273
268
packageVersion,
274
269
} ) ;
@@ -277,15 +272,15 @@ const plugin = (
277
272
278
273
const portPromise = createServer ( ) . then ( ( { server : wss , port } ) => {
279
274
wss . on ( "connection" , function connection ( ws ) {
280
- logger . info ( "CypressPlugin:WebSocketConnected" ) ;
275
+ logInfo ( "CypressPlugin:WebSocketConnected" ) ;
281
276
282
277
ws . on ( "close" , ( ) => {
283
- logger . info ( "CypressPlugin:WebSocketClosed" ) ;
278
+ logInfo ( "CypressPlugin:WebSocketClosed" ) ;
284
279
} ) ;
285
280
286
281
ws . on ( "error" , error => {
287
- logger . error ( "CypressPlugin:WebSocketError" , { error } ) ;
288
- mixpanelAPI . trackEvent ( "error.websocket-error" , { error } ) ;
282
+ logError ( "CypressPlugin:WebSocketError" , { error } ) ;
283
+ trackEvent ( "error.websocket-error" , { error } ) ;
289
284
warn ( "WebSocket error" , error ) ;
290
285
} ) ;
291
286
@@ -295,8 +290,8 @@ const plugin = (
295
290
const obj = JSON . parse ( payload ) as { events : StepEvent [ ] } ;
296
291
onReplayTask ( obj . events ) ;
297
292
} catch ( error ) {
298
- logger . error ( "CypressPlugin:WebSocketMessageError" , { error } ) ;
299
- mixpanelAPI . trackEvent ( "error.websocket-message-error" , { error } ) ;
293
+ logError ( "CypressPlugin:WebSocketMessageError" , { error } ) ;
294
+ trackEvent ( "error.websocket-message-error" , { error } ) ;
300
295
warn ( "Error parsing message from test" , error ) ;
301
296
}
302
297
} ) ;
@@ -324,7 +319,7 @@ const plugin = (
324
319
[ CONNECT_TASK_NAME ] : async value => {
325
320
const port = await portPromise ;
326
321
327
- logger . info ( "CypressPlugin:ConnectedToServer" , { port } ) ;
322
+ logInfo ( "CypressPlugin:ConnectedToServer" , { port } ) ;
328
323
return { port } ;
329
324
} ,
330
325
} ) ;
@@ -344,14 +339,14 @@ const plugin = (
344
339
if ( config . isTextTerminal ) {
345
340
config . env . NO_COMMAND_LOG =
346
341
process . env . CYPRESS_NO_COMMAND_LOG ?? config . env . NO_COMMAND_LOG ?? 1 ;
347
- logger . info ( "CypressPlugin:CommandLogEnabled" , {
342
+ logInfo ( "CypressPlugin:CommandLogEnabled" , {
348
343
noCommandLog : config . env . NO_COMMAND_LOG ,
349
344
} ) ;
350
345
}
351
346
352
347
const chromiumPath = getRuntimePath ( ) ;
353
348
if ( chromiumPath ) {
354
- logger . info ( "CypressPlugin:AddedChromium" , { chromiumPath } ) ;
349
+ logInfo ( "CypressPlugin:AddedChromium" , { chromiumPath } ) ;
355
350
config . browsers = config . browsers . concat ( {
356
351
name : "replay-chromium" ,
357
352
channel : "stable" ,
@@ -364,7 +359,7 @@ const plugin = (
364
359
isHeadless : false ,
365
360
} ) ;
366
361
} else {
367
- logger . info ( "CypressPlugin:ReplayChromiumNotSupported" , {
362
+ logInfo ( "CypressPlugin:ReplayChromiumNotSupported" , {
368
363
platform : process . platform ,
369
364
chromiumPath,
370
365
} ) ;
0 commit comments