Skip to content

Commit 0a9bece

Browse files
Merge branch 'develop' into electron-34
2 parents 2ab3b0f + eb5fe56 commit 0a9bece

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+641
-536
lines changed

.circleci/workflows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 2.1
22

33
chrome-stable-version: &chrome-stable-version "135.0.7049.84"
4-
chrome-beta-version: &chrome-beta-version "136.0.7103.17"
4+
chrome-beta-version: &chrome-beta-version "136.0.7103.25"
55
firefox-stable-version: &firefox-stable-version "137.0"
66

77
orbs:

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,4 +398,7 @@ tooling/v8-snapshot/cache/prod-win32
398398
system-tests/lib/validations
399399

400400
.nx/cache
401-
.nx/workspace-data
401+
.nx/workspace-data
402+
403+
# IDE files
404+
.cursor

cli/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33

44
_Released 4/22/2025 (PENDING)_
55

6+
**Bugfixes:**
7+
8+
- The [`cy.press()`](http://on.cypress.io/api/press) command no longer errors when used in specs subsequent to the first spec in run mode. Fixes [#31466](https://github.com/cypress-io/cypress/issues/31466).
9+
10+
**Misc:**
11+
12+
- Suppress benign warnings that reference OOM score of renderer. Addresses [#29563](https://github.com/cypress-io/cypress/issues/29563). Addressed in [#31521](https://github.com/cypress-io/cypress/pull/31521).
13+
- The UI of the reporter and URL were updated to a darker gray background for better color contrast. Addressed in [#31475](https://github.com/cypress-io/cypress/pull/31475).
14+
- Fixed an issue where the error message output when attempting to install Cypress on an unsupported architecture included an outdated documentation link to Cypress system requirements. Fixes [#31512](https://github.com/cypress-io/cypress/issues/31512).
15+
616
**Dependency Updates:**
717

818
- Upgraded `electron` from `33.2.1` to `34.3.3`. Addresses [#31245](https://github.com/cypress-io/cypress/issues/31245). Addressed in [#31260](https://github.com/cypress-io/cypress/pull/31260).

cli/__snapshots__/install_spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ Installing Cypress (version: 1.2.3)
274274
exports['error when installing on unsupported os'] = `
275275
Error: The Cypress App could not be installed. Your machine does not meet the operating system requirements.
276276
277-
https://on.cypress.io/guides/getting-started/installing-cypress#system-requirements
277+
https://on.cypress.io/app/get-started/install-cypress#System-requirements
278278
279279
----------
280280

cli/lib/errors.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const invalidOS = {
4242
description: 'The Cypress App could not be installed. Your machine does not meet the operating system requirements.',
4343
solution: stripIndent`
4444
45-
${chalk.blue('https://on.cypress.io/guides/getting-started/installing-cypress#system-requirements')}`,
45+
${chalk.blue('https://on.cypress.io/app/get-started/install-cypress#System-requirements')}`,
4646
}
4747

4848
const failedDownload = {

cli/lib/exec/spawn.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ const readline = require('readline')
1616
const isXlibOrLibudevRe = /^(?:Xlib|libudev)/
1717
const isHighSierraWarningRe = /\*\*\* WARNING/
1818
const isRenderWorkerRe = /\.RenderWorker-/
19+
// This is a warning that occurs when running in a container on Linux.
20+
// https://github.com/cypress-io/cypress/issues/29563
21+
// Example:
22+
// [437:1212/125803.148706:ERROR:zygote_host_impl_linux.cc(273)] Failed to adjust OOM score of renderer with pid 610: Permission denied (13)
23+
const isOOMScoreWarningRe = /Failed to adjust OOM score of renderer with pid/
1924

2025
// Chromium (which Electron uses) always makes several attempts to connect to the system dbus.
2126
// This works fine in most desktop environments, but in a docker container, there is no dbus service
@@ -100,6 +105,7 @@ const GARBAGE_WARNINGS = [
100105
isXlibOrLibudevRe,
101106
isHighSierraWarningRe,
102107
isRenderWorkerRe,
108+
isOOMScoreWarningRe,
103109
isDbusWarning,
104110
isCertVerifyProcBuiltin,
105111
isHostVulkanDriverWarning,

cli/test/lib/exec/spawn_spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ describe('lib/exec/spawn', function () {
9999
[78887:1023/114920.074882:ERROR:debug_utils.cc(14)] Hit debug scenario: 4
100100
101101
[18489:0822/130231.159571:ERROR:gl_display.cc(497)] EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
102+
103+
[437:1212/125803.148706:ERROR:zygote_host_impl_linux.cc(273)] Failed to adjust OOM score of renderer with pid 610: Permission denied (13)
102104
`
103105

104106
const lines = _
@@ -124,6 +126,10 @@ describe('lib/exec/spawn', function () {
124126
it('returns true for GLX driver errors', () => {
125127
expect(spawn.isGarbageLineWarning('glx: failed to create drisw screen')).to.be.true
126128
})
129+
130+
it('returns true for OOM score adjustment warnings', () => {
131+
expect(spawn.isGarbageLineWarning('[437:1212/125803.148706:ERROR:zygote_host_impl_linux.cc(273)] Failed to adjust OOM score of renderer with pid 610: Permission denied (13)')).to.be.true
132+
})
127133
})
128134

129135
context('.start', function () {

npm/mount-utils/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
4444

4545
/* Experimental Options */
46-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
4746
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
4847
"esModuleInterop": true
4948
},

npm/vite-dev-server/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
4343

4444
/* Experimental Options */
45-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
4645
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
4746
"esModuleInterop": true,
4847
/** Allows us to strip internal types sourced from webpack */

npm/vite-plugin-cypress-esm/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
4343

4444
/* Experimental Options */
45-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
4645
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
4746
"esModuleInterop": true,
4847
/** Allows us to strip internal types sourced from webpack */

npm/vue/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
4646

4747
/* Experimental Options */
48-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
4948
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
5049
"esModuleInterop": true
5150
},

npm/webpack-dev-server/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
4343

4444
/* Experimental Options */
45-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
4645
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
4746
"esModuleInterop": true,
4847
"skipLibCheck": true,

npm/webpack-preprocessor/tsconfig.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
5757

5858
/* Experimental Options */
59-
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
6059
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
6160

6261
/* Advanced Options */

packages/app/src/runner/SpecRunnerHeaderOpenMode.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
<div
33
id="spec-runner-header"
44
ref="autHeaderEl"
5-
class="h-full bg-gray-1000 border-l-[1px] border-gray-900 min-h-[64px] text-[14px]"
5+
class="h-full bg-gray-1100 border-l-[1px] border-gray-900 min-h-[64px] text-[14px]"
66
>
77
<div class="flex flex-wrap grow p-[16px] gap-[12px] justify-end h-[64px]">
88
<button
99
data-cy="playground-activator"
1010
:disabled="isDisabled"
11-
class="bg-gray-900 border rounded-md flex h-full border-gray-800 outline-solid outline-indigo-500 transition w-[40px] duration-150 items-center justify-center hover:bg-gray-800"
11+
class="bg-gray-1100 border rounded-md flex h-full border-gray-800 outline-solid outline-indigo-500 transition w-[40px] duration-150 items-center justify-center hover:bg-gray-800"
1212
:aria-label="t('runner.selectorPlayground.toggle')"
13-
:class="[selectorPlaygroundStore.show ? 'bg-gray-800 border-gray-700' : 'bg-gray-900']"
13+
:class="[selectorPlaygroundStore.show ? 'bg-gray-800 border-gray-700' : 'bg-gray-1100']"
1414
@click="togglePlayground"
1515
>
1616
<i-cy-crosshairs_x16 class="icon-dark-gray-300" />

packages/app/src/runner/SpecRunnerHeaderRunMode.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<div
33
id="spec-runner-header"
44
ref="autHeaderEl"
5-
class="bg-gray-1000 border-l-[1px] border-gray-900 min-h-[64px] px-[16px] text-[14px]"
5+
class="bg-gray-1100 border-l-[1px] border-gray-900 min-h-[64px] px-[16px] text-[14px]"
66
>
77
<!-- this is similar to the Open Mode header but it's not interactive, so can be a lot smaller-->
88
<div class="flex grow flex-wrap py-[16px] gap-[12px] justify-end">

packages/app/src/studio/studio-app-types.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
export interface StudioPanelProps {
22
canAccessStudioAI: boolean
3+
useStudioEventManager?: StudioEventManagerShape
4+
useStudioAIStream?: StudioAIStreamShape
35
}
46

57
export type StudioPanelShape = (props: StudioPanelProps) => JSX.Element
@@ -9,3 +11,27 @@ export interface StudioAppDefaultShape {
911
// transferred to the Cypress app
1012
StudioPanel: StudioPanelShape
1113
}
14+
15+
export type CypressInternal = Cypress.Cypress &
16+
CyEventEmitter & {
17+
state: (key: string) => any
18+
}
19+
20+
export interface StudioEventManagerProps {
21+
Cypress: CypressInternal
22+
}
23+
24+
export type RunnerStatus = 'running' | 'finished'
25+
26+
export type StudioEventManagerShape = (props: StudioEventManagerProps) => {
27+
runnerStatus: RunnerStatus
28+
testBlock: string | null
29+
}
30+
31+
export interface StudioAIStreamProps {
32+
canAccessStudioAI: boolean
33+
AIOutputRef: { current: HTMLTextAreaElement | null }
34+
runnerStatus: RunnerStatus
35+
}
36+
37+
export type StudioAIStreamShape = (props: StudioAIStreamProps) => void

packages/data-context/src/DataActions.ts

Lines changed: 57 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,98 +19,117 @@ import { ErrorActions } from './actions/ErrorActions'
1919
import { EventCollectorActions } from './actions/EventCollectorActions'
2020
import { NotificationActions } from './actions/NotificationActions'
2121
import { VersionsActions } from './actions/VersionsActions'
22-
import { cached } from './util'
2322

2423
export class DataActions {
25-
constructor (private ctx: DataContext) {}
24+
private _error: ErrorActions
25+
private _file: FileActions
26+
private _dev: DevActions
27+
private _app: AppActions
28+
private _auth: AuthActions
29+
private _localSettings: LocalSettingsActions
30+
private _wizard: WizardActions
31+
private _project: ProjectActions
32+
private _electron: ElectronActions
33+
private _migration: MigrationActions
34+
private _browser: BrowserActions
35+
private _servers: ServersActions
36+
private _versions: VersionsActions
37+
private _eventCollector: EventCollectorActions
38+
private _cohorts: CohortsActions
39+
private _codegen: CodegenActions
40+
private _notification: NotificationActions
41+
private _cloudProject: CloudProjectActions
42+
43+
constructor (private ctx: DataContext) {
44+
this._error = new ErrorActions(this.ctx)
45+
this._file = new FileActions(this.ctx)
46+
this._dev = new DevActions(this.ctx)
47+
this._app = new AppActions(this.ctx)
48+
this._auth = new AuthActions(this.ctx)
49+
this._localSettings = new LocalSettingsActions(this.ctx)
50+
this._wizard = new WizardActions(this.ctx)
51+
this._project = new ProjectActions(this.ctx)
52+
this._electron = new ElectronActions(this.ctx)
53+
this._migration = new MigrationActions(this.ctx)
54+
this._browser = new BrowserActions(this.ctx)
55+
this._servers = new ServersActions(this.ctx)
56+
this._versions = new VersionsActions(this.ctx)
57+
this._eventCollector = new EventCollectorActions(this.ctx)
58+
this._cohorts = new CohortsActions(this.ctx)
59+
this._codegen = new CodegenActions(this.ctx)
60+
this._notification = new NotificationActions(this.ctx)
61+
this._cloudProject = new CloudProjectActions(this.ctx)
62+
}
2663

27-
@cached
2864
get error () {
29-
return new ErrorActions(this.ctx)
65+
return this._error
3066
}
3167

32-
@cached
3368
get file () {
34-
return new FileActions(this.ctx)
69+
return this._file
3570
}
3671

37-
@cached
3872
get dev () {
39-
return new DevActions(this.ctx)
73+
return this._dev
4074
}
4175

42-
@cached
4376
get app () {
44-
return new AppActions(this.ctx)
77+
return this._app
4578
}
4679

47-
@cached
4880
get auth () {
49-
return new AuthActions(this.ctx)
81+
return this._auth
5082
}
5183

52-
@cached
5384
get localSettings () {
54-
return new LocalSettingsActions(this.ctx)
85+
return this._localSettings
5586
}
5687

57-
@cached
5888
get wizard () {
59-
return new WizardActions(this.ctx)
89+
return this._wizard
6090
}
6191

62-
@cached
6392
get project () {
64-
return new ProjectActions(this.ctx)
93+
return this._project
6594
}
6695

67-
@cached
6896
get electron () {
69-
return new ElectronActions(this.ctx)
97+
return this._electron
7098
}
7199

72-
@cached
73100
get migration () {
74-
return new MigrationActions(this.ctx)
101+
return this._migration
75102
}
76103

77-
@cached
78104
get browser () {
79-
return new BrowserActions(this.ctx)
105+
return this._browser
80106
}
81107

82-
@cached
83108
get servers () {
84-
return new ServersActions(this.ctx)
109+
return this._servers
85110
}
86111

87-
@cached
88112
get versions () {
89-
return new VersionsActions(this.ctx)
113+
return this._versions
90114
}
91115

92-
@cached
93116
get eventCollector () {
94-
return new EventCollectorActions(this.ctx)
117+
return this._eventCollector
95118
}
96119

97-
@cached
98120
get cohorts () {
99-
return new CohortsActions(this.ctx)
121+
return this._cohorts
100122
}
101123

102-
@cached
103124
get codegen () {
104-
return new CodegenActions(this.ctx)
125+
return this._codegen
105126
}
106127

107-
@cached
108128
get notification () {
109-
return new NotificationActions(this.ctx)
129+
return this._notification
110130
}
111131

112-
@cached
113132
get cloudProject () {
114-
return new CloudProjectActions(this.ctx)
133+
return this._cloudProject
115134
}
116135
}

0 commit comments

Comments
 (0)