forked from cypress-io/cypress
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstart-cypress.js
82 lines (59 loc) · 2.75 KB
/
start-cypress.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const electronApp = require('./lib/util/electron-app')
const { telemetry, OTLPTraceExporterCloud } = require('@packages/telemetry')
const { apiRoutes } = require('./lib/cloud/routes')
const encryption = require('./lib/cloud/encryption')
// are we in the main node process or the electron process?
const isRunningElectron = electronApp.isRunning()
const pkg = require('@packages/root')
if (isRunningElectron) {
// To pass unencrypted telemetry data to an independent open telemetry endpoint,
// disable the encryption header, update the url, and add any other required headers.
// For example:
// const exporter = new OTLPTraceExporterCloud({
// url: 'https://api.honeycomb.io/v1/traces',
// headers: {
// 'x-honeycomb-team': 'key',
// },
// })
// See additional information here: https://github.com/cypress-io/cypress/blob/develop/packages/telemetry/README.md#otlptraceexportercloud
const exporter = new OTLPTraceExporterCloud({
url: apiRoutes.telemetry(),
encryption,
})
telemetry.init({
namespace: 'cypress:server',
version: pkg.version,
exporter,
})
const { debugElapsedTime } = require('./lib/util/performance_benchmark')
const v8SnapshotStartupTime = debugElapsedTime('v8-snapshot-startup-time')
const endTime = v8SnapshotStartupTime + global.cypressServerStartTime
telemetry.startSpan({ name: 'cypress', attachType: 'root', active: true, opts: { startTime: global.cypressBinaryStartTime } })
const v8SnapshotSpan = telemetry.startSpan({ name: 'v8snapshot:startup', opts: { startTime: global.cypressServerStartTime } })
v8SnapshotSpan?.end(endTime)
telemetry.startSpan({ name: 'binary:startup' })
}
const { patchFs } = require('./lib/util/patch-fs')
const fs = require('fs')
// prevent EMFILE errors
patchFs(fs)
// override tty if we're being forced to
require('./lib/util/tty').override()
if (process.env.CY_NET_PROFILE && isRunningElectron) {
const netProfiler = require('./lib/util/net_profiler')()
process.stdout.write(`Network profiler writing to ${netProfiler.logPath}\n`)
}
require('./lib/unhandled_exceptions').handle()
process.env.UV_THREADPOOL_SIZE = 128
if (isRunningElectron) {
require('./lib/util/process_profiler').start()
}
// warn when deprecated callback apis are used in electron
// https://github.com/electron/electron/blob/master/docs/api/process.md#processenablepromiseapis
process.enablePromiseAPIs = process.env.CYPRESS_INTERNAL_ENV !== 'production'
// don't show any electron deprecation warnings in prod
process.noDeprecation = process.env.CYPRESS_INTERNAL_ENV === 'production'
// always show stack traces for Electron deprecation warnings
process.traceDeprecation = true
require('./lib/util/suppress_warnings').suppress()
module.exports = require('./lib/cypress').start(process.argv)