Skip to content

Commit 646ef10

Browse files
authored
Merge pull request #31489 from cypress-io/chore/merge_15_develop
chore: merge develop into release/15.0.0
2 parents 346e801 + 6165b8b commit 646ef10

Some content is hidden

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

51 files changed

+641
-548
lines changed

.circleci/workflows.yml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 2.1
22

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

77
orbs:
@@ -38,7 +38,7 @@ mainBuildFilters: &mainBuildFilters
3838
- /^release\/\d+\.\d+\.\d+$/
3939
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
4040
- 'update-v8-snapshot-cache-on-develop'
41-
- 'chore/fix_react_18_deprecation_warnings'
41+
- 'chore/update_mobx_decoratorless'
4242

4343
# usually we don't build Mac app - it takes a long time
4444
# but sometimes we want to really confirm we are doing the right thing
@@ -49,7 +49,7 @@ macWorkflowFilters: &darwin-workflow-filters
4949
- equal: [ develop, << pipeline.git.branch >> ]
5050
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
5151
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
52-
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
52+
- equal: [ 'chore/update_mobx_decoratorless', << pipeline.git.branch >> ]
5353
- matches:
5454
pattern: /^release\/\d+\.\d+\.\d+$/
5555
value: << pipeline.git.branch >>
@@ -60,7 +60,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters
6060
- equal: [ develop, << pipeline.git.branch >> ]
6161
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
6262
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
63-
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
63+
- equal: [ 'chore/update_mobx_decoratorless', << pipeline.git.branch >> ]
6464
- matches:
6565
pattern: /^release\/\d+\.\d+\.\d+$/
6666
value: << pipeline.git.branch >>
@@ -83,8 +83,7 @@ windowsWorkflowFilters: &windows-workflow-filters
8383
- equal: [ develop, << pipeline.git.branch >> ]
8484
# use the following branch as well to ensure that v8 snapshot cache updates are fully tested
8585
- equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ]
86-
- equal: [ 'chore/fix_react_18_deprecation_warnings', << pipeline.git.branch >> ]
87-
- equal: [ 'cacie/fix-du', << pipeline.git.branch >> ]
86+
- equal: [ 'chore/update_mobx_decoratorless', << pipeline.git.branch >> ]
8887
- matches:
8988
pattern: /^release\/\d+\.\d+\.\d+$/
9089
value: << pipeline.git.branch >>
@@ -158,7 +157,7 @@ commands:
158157
name: Set environment variable to determine whether or not to persist artifacts
159158
command: |
160159
echo "Setting SHOULD_PERSIST_ARTIFACTS variable"
161-
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "chore/fix_react_18_deprecation_warnings" ]]; then
160+
echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "chore/update_mobx_decoratorless" ]]; then
162161
export SHOULD_PERSIST_ARTIFACTS=true
163162
fi' >> "$BASH_ENV"
164163
# You must run `setup_should_persist_artifacts` command and be using bash before running this command
@@ -803,7 +802,7 @@ commands:
803802
if [[ <<parameters.type>> == 'ct' ]]; then
804803
# component tests are located side by side with the source codes.
805804
# for the app component tests, ignore specs that are known to cause failures on contributor PRs (see https://discuss.circleci.com/t/how-to-exclude-certain-files-from-circleci-test-globbing/41028)
806-
TESTFILES=$(find src -regextype posix-extended -name '*.cy.*' -not -regex '.*(FileMatch|PromoAction|SelectorPlayground|useDurationFormat|useTestingType|SpecPatterns).cy.*' | circleci tests split --total=$CIRCLE_NODE_TOTAL)
805+
TESTFILES=$(find src -regextype posix-extended -name '*.cy.*' | circleci tests split --total=$CIRCLE_NODE_TOTAL)
807806
else
808807
GLOB="cypress/e2e/**/*cy.*"
809808
TESTFILES=$(circleci tests glob "$GLOB" | circleci tests split --total=$CIRCLE_NODE_TOTAL)

.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: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ _Released 07/01/2025 (PENDING)_
88
- Removed support for Node.js 18 and Node.js 23. Addresses [#31302](https://github.com/cypress-io/cypress/issues/31302).
99
- Removed support for [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol) with the [firefox](https://www.mozilla.org/) browser. Addresses [#31189](https://github.com/cypress-io/cypress/issues/31189).
1010

11+
## 14.3.1
12+
13+
_Released 4/22/2025 (PENDING)_
14+
15+
**Misc:**
16+
17+
- 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).
18+
1119
## 14.3.0
1220

1321
_Released 4/8/2025_

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/runner/selector-playground/SelectorPlayground.cy.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ describe('SelectorPlayground', () => {
6868
selectorPlaygroundStore.setNumElements(0)
6969

7070
mountSelectorPlayground()
71+
cy.then(() => selectorPlaygroundStore.setValidity(true))
72+
7173
cy.get('[data-cy="playground-num-elements"]').contains('No matches')
7274

7375
cy.then(() => selectorPlaygroundStore.setNumElements(1))

packages/app/src/store/mobx-runner-store.ts

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,47 @@ const defaults = {
1515
} as const
1616

1717
export class MobxRunnerStore {
18-
@observable spec?: Cypress.Spec
19-
@observable specs: Cypress.Spec[] = []
20-
@observable specRunId?: string
21-
@observable isLoading = true
22-
@observable width: number
23-
@observable height: number
24-
@observable automation?: AutomationStatus
25-
@observable canSaveStudioLogs = false
18+
spec?: Cypress.Spec
19+
specs: Cypress.Spec[] = []
20+
specRunId?: string
21+
isLoading = true
22+
width: number
23+
height: number
24+
automation?: AutomationStatus
25+
canSaveStudioLogs = false
2626

2727
constructor (testingType: Cypress.TestingType) {
28-
makeObservable(this)
28+
makeObservable(this, {
29+
spec: observable,
30+
specs: observable,
31+
specRunId: observable,
32+
isLoading: observable,
33+
width: observable,
34+
height: observable,
35+
automation: observable,
36+
canSaveStudioLogs: observable,
37+
setCanSaveStudioLogs: action,
38+
setSpec: action,
39+
checkCurrentSpecStillExists: action,
40+
setSpecs: action,
41+
setIsLoading: action,
42+
updateDimensions: action,
43+
})
44+
2945
this.width = defaults[testingType].width
3046
this.height = defaults[testingType].height
3147
}
3248

33-
@action setCanSaveStudioLogs (canSave: boolean) {
49+
setCanSaveStudioLogs (canSave: boolean) {
3450
this.canSaveStudioLogs = canSave
3551
}
3652

37-
@action setSpec (spec: Cypress.Spec | undefined) {
53+
setSpec (spec: Cypress.Spec | undefined) {
3854
this.spec = spec
3955
this.specRunId = nanoid()
4056
}
4157

42-
@action checkCurrentSpecStillExists (specs: Cypress.Spec[]) {
58+
checkCurrentSpecStillExists (specs: Cypress.Spec[]) {
4359
const newSpecsAbsolutes = new Set(specs.map((spec) => spec.absolute))
4460

4561
this.specs.forEach((oldSpec) => {
@@ -49,16 +65,16 @@ export class MobxRunnerStore {
4965
})
5066
}
5167

52-
@action setSpecs (specs: Cypress.Spec[]) {
68+
setSpecs (specs: Cypress.Spec[]) {
5369
this.checkCurrentSpecStillExists(specs)
5470
this.specs = specs
5571
}
5672

57-
@action setIsLoading (isLoading: boolean) {
73+
setIsLoading (isLoading: boolean) {
5874
this.isLoading = isLoading
5975
}
6076

61-
@action updateDimensions (width: number, height: number) {
77+
updateDimensions (width: number, height: number) {
6278
this.height = height
6379
this.width = width
6480
}

packages/app/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212
"../frontend-shared/cypress/**/*.ts"
1313
],
1414
"compilerOptions": {
15-
"noImplicitThis": true,
15+
// needed for mobx
1616
"useDefineForClassFields": true,
17+
"noImplicitThis": true,
1718
"paths": {
1819
"@cy/i18n": ["../frontend-shared/src/locales/i18n"],
1920
"@cy/components/*": ["../frontend-shared/src/components/*"],

packages/app/vite.config.mjs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,27 @@ const config = makeConfig({
1919
'events',
2020
'@popperjs/core',
2121
'@opentelemetry/*',
22+
'@headlessui/vue',
23+
'@cypress-design/vue-icon',
24+
'@cypress-design/vue-statusicon',
25+
'human-interval',
26+
'floating-vue',
27+
'dayjs',
28+
'dayjs/plugin/relativeTime',
29+
'dayjs/plugin/duration',
30+
'dayjs/plugin/customParseFormat',
31+
'dayjs/plugin/utc',
32+
'markdown-it',
33+
'@toycode/markdown-it-class',
34+
'@cypress-design/vue-tabs',
35+
'gravatar',
36+
'@opentelemetry/sdk-trace-web',
37+
'@opentelemetry/resources',
38+
'@opentelemetry/sdk-trace-base',
39+
'@opentelemetry/api',
40+
'@opentelemetry/semantic-conventions',
41+
'@opentelemetry/exporter-trace-otlp-http',
42+
'@opentelemetry/core',
2243
],
2344
esbuildOptions: {
2445
target: 'ES2022',

packages/data-context/src/data/coreDataShape.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FoundBrowser, Editor, AllowedState, AllModeOptions, TestingType, BrowserStatus, PACKAGE_MANAGERS, AuthStateName, MIGRATION_STEPS, MigrationStep, BannerState, StudioManagerShape } from '@packages/types'
1+
import { FoundBrowser, Editor, AllowedState, AllModeOptions, TestingType, BrowserStatus, PACKAGE_MANAGERS, AuthStateName, MIGRATION_STEPS, MigrationStep, StudioManagerShape } from '@packages/types'
22
import { WizardBundler, CT_FRAMEWORKS, resolveComponentFrameworkDefinition, ErroredFramework } from '@packages/scaffold-config'
33
import type { NexusGenObjects } from '@packages/graphql/src/gen/nxs.gen'
44
// tslint:disable-next-line no-implicit-dependencies - electron dep needs to be defined
@@ -22,7 +22,7 @@ export interface AuthenticatedUserShape {
2222

2323
export interface ProjectShape {
2424
projectRoot: string
25-
savedState?: () => Promise<Maybe<SavedStateShape>>
25+
savedState?: () => Promise<AllowedState>
2626
}
2727

2828
export interface ServersDataShape {
@@ -47,15 +47,6 @@ export interface LocalSettingsDataShape {
4747
preferences: AllowedState
4848
}
4949

50-
export interface SavedStateShape {
51-
firstOpened?: number | null
52-
lastOpened?: number | null
53-
promptsShown?: object | null
54-
banners?: BannerState | null
55-
lastProjectId?: string | null
56-
specFilter?: string | null
57-
}
58-
5950
export interface ConfigChildProcessShape {
6051
/**
6152
* Child process executing the config & sourcing plugin events

packages/frontend-shared/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"devDependencies": {
3232
"@antfu/utils": "^0.7.8",
3333
"@babel/code-frame": "7.26.2",
34-
"@cypress-design/css": "^1.0.0",
34+
"@cypress-design/css": "^1.1.0",
3535
"@faker-js/faker": "9.6.0",
3636
"@graphql-codegen/plugin-helpers": "2.3.2",
3737
"@graphql-typed-document-node/core": "^3.1.0",

packages/reporter/src/agents/agent-model.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ export interface AgentProps extends InstrumentProps {
77
}
88

99
export default class Agent extends Instrument {
10-
@observable callCount: number = 0
11-
@observable functionName: string
10+
callCount: number = 0
11+
functionName: string
1212

1313
constructor (props: AgentProps) {
1414
super(props)
1515

16-
makeObservable(this)
16+
makeObservable(this, {
17+
callCount: observable,
18+
functionName: observable,
19+
})
1720

1821
this.callCount = props.callCount
1922
this.functionName = props.functionName

0 commit comments

Comments
 (0)