Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: throw when writing to 'read only' properties of config #18896

Merged
merged 88 commits into from
Dec 10, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
65b3dd7
add readonly prop
davidmunechika Oct 20, 2021
2e26506
remove read only
davidmunechika Oct 20, 2021
8177afc
verify config options
davidmunechika Oct 20, 2021
531059c
format
davidmunechika Oct 21, 2021
8c157e6
fix verify merge conflicts
davidmunechika Nov 12, 2021
36269a0
add retries property
davidmunechika Nov 12, 2021
65e91ae
add new properties
davidmunechika Nov 12, 2021
b91e503
fix config override test
davidmunechika Nov 12, 2021
464254e
update writeable options
davidmunechika Nov 12, 2021
f9beb27
fix testConfigList
davidmunechika Nov 12, 2021
53a9665
fix request spec test
davidmunechika Nov 15, 2021
380cda8
refactor validate into config package
davidmunechika Nov 15, 2021
7b27835
fix isInteractive default
davidmunechika Nov 15, 2021
b71fd60
add config options
davidmunechika Nov 15, 2021
0b35210
fix keystroke validation
davidmunechika Nov 15, 2021
3088a52
update snapshot
davidmunechika Nov 15, 2021
0296226
fix public config key snapshot
davidmunechika Nov 15, 2021
6014e5d
add unit tests
davidmunechika Nov 15, 2021
235b5b9
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 15, 2021
e8dee2d
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 16, 2021
75a4b09
testConfigList check
davidmunechika Nov 16, 2021
7e9743e
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Nov 16, 2021
404247d
fix test config overrides for .only
davidmunechika Nov 17, 2021
19e9bed
add tests
davidmunechika Nov 22, 2021
3f4063e
add test config override tests
davidmunechika Nov 22, 2021
6c26a27
fix config override test
davidmunechika Nov 22, 2021
ecf1fee
refactor error message
davidmunechika Nov 23, 2021
c37cd33
fix unit tests
davidmunechika Nov 23, 2021
0e7fb85
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 23, 2021
45b726d
remove .only
davidmunechika Nov 23, 2021
982b320
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Nov 23, 2021
6e625c4
fix fixtures spec message
davidmunechika Nov 23, 2021
d6568ee
fix error handling
davidmunechika Nov 23, 2021
ab97136
fix unit test
davidmunechika Nov 23, 2021
25fbe7a
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 23, 2021
2e74c1d
add description for isWriteable
davidmunechika Nov 24, 2021
69175b8
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Nov 24, 2021
d3b8898
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 24, 2021
120fd49
remove .been
davidmunechika Nov 24, 2021
d3df4b8
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Nov 24, 2021
e49178f
remove read-only properties
davidmunechika Nov 24, 2021
f6332f4
remove exit property
davidmunechika Nov 24, 2021
b24a0f1
skip validation for internal use
davidmunechika Nov 24, 2021
e7ea235
update public config keys
davidmunechika Nov 24, 2021
7c350d7
fix config spec
davidmunechika Nov 24, 2021
e3986a6
add env check to config override test
davidmunechika Nov 24, 2021
a56364a
convert array to object
davidmunechika Nov 24, 2021
a4e004a
runtime config options not writeable
davidmunechika Nov 24, 2021
0c8360e
move error messages to errUtils
davidmunechika Nov 24, 2021
ef210c8
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 24, 2021
52e5cfb
remove isInteractive public option
davidmunechika Nov 28, 2021
019a4a3
update snapshots
davidmunechika Nov 28, 2021
f644e25
update naming
davidmunechika Nov 28, 2021
7d80bbc
update index naming
davidmunechika Nov 28, 2021
9a9ff67
update types
davidmunechika Nov 28, 2021
905feef
fix config spec
davidmunechika Nov 29, 2021
edd66e4
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Nov 29, 2021
46ed7ec
restore snapshots
davidmunechika Nov 29, 2021
cecc6a4
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Nov 29, 2021
6738f3e
make isInteractive internal
davidmunechika Nov 29, 2021
138298d
add runtime config option types
davidmunechika Nov 29, 2021
a4626f5
fix type failure
davidmunechika Nov 29, 2021
b80340e
add cypress internal env to system test
davidmunechika Nov 29, 2021
b4f7194
remove internal from isInteractive
davidmunechika Nov 30, 2021
a9ab97a
update types
davidmunechika Nov 30, 2021
a7ea29d
only verify cypress config
davidmunechika Dec 1, 2021
fedae31
pass cypress internal env in system test
davidmunechika Dec 2, 2021
1ddc0a0
move how env is passed in system tests
davidmunechika Dec 3, 2021
4a121fa
use processEnv with error ui spec
davidmunechika Dec 3, 2021
bcfca89
use createIndex
davidmunechika Dec 3, 2021
590eb0e
fix logic for test config override options
davidmunechika Dec 3, 2021
33d4db0
fix logic for test config override options
davidmunechika Dec 3, 2021
2d9efd5
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
emilyrohrbough Dec 6, 2021
0c9c8dd
only check read only properties
davidmunechika Dec 6, 2021
d20a59e
Merge branch 'issue-6407-warn-for-read-only-properties' of https://gi…
davidmunechika Dec 6, 2021
101d445
add unit tests for non-cypress config
davidmunechika Dec 6, 2021
875e287
use window.top instead of env
davidmunechika Dec 7, 2021
3165ac0
fix runner tests
davidmunechika Dec 7, 2021
6c8ea25
update system tests
davidmunechika Dec 7, 2021
24ff38f
update error ui specs
davidmunechika Dec 7, 2021
8a65255
update snapshot text
davidmunechika Dec 8, 2021
b4fd2ae
fix error ui spec
davidmunechika Dec 8, 2021
4f790a1
add ts-ignore
davidmunechika Dec 8, 2021
0c3b26e
fix line numbers for system tests
davidmunechika Dec 9, 2021
31955ad
update snapshot
davidmunechika Dec 9, 2021
54e7548
update unit tests
davidmunechika Dec 9, 2021
abfabc0
fix snapshot spacing
davidmunechika Dec 9, 2021
de7b436
Merge branch 'develop' into issue-6407-warn-for-read-only-properties
davidmunechika Dec 10, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions cli/types/cypress.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ declare namespace Cypress {
// 60000
```
*/
config<K extends keyof ConfigOptions>(key: K): ResolvedConfigOptions[K]
config<K extends keyof Config>(key: K): Config[K]
/**
* Sets one configuration value.
* @see https://on.cypress.io/config
Expand All @@ -337,7 +337,7 @@ declare namespace Cypress {
Cypress.config('viewportWidth', 800)
```
*/
config<K extends keyof ConfigOptions>(key: K, value: ResolvedConfigOptions[K]): void
config<K extends keyof TestConfigOverrides>(key: K, value: TestConfigOverrides[K]): void
/**
* Sets multiple configuration values at once.
* @see https://on.cypress.io/config
Expand Down Expand Up @@ -2879,7 +2879,7 @@ declare namespace Cypress {
xhrUrl: string
}

interface TestConfigOverrides extends Partial<Pick<ConfigOptions, 'animationDistanceThreshold' | 'baseUrl' | 'defaultCommandTimeout' | 'env' | 'execTimeout' | 'includeShadowDom' | 'requestTimeout' | 'responseTimeout' | 'retries' | 'scrollBehavior' | 'taskTimeout' | 'viewportHeight' | 'viewportWidth' | 'waitForAnimations'>> {
interface TestConfigOverrides extends Partial<Pick<ConfigOptions, 'animationDistanceThreshold' | 'baseUrl' | 'blockHosts' | 'defaultCommandTimeout' | 'env' | 'execTimeout' | 'includeShadowDom' | 'numTestsKeptInMemory' | 'pageLoadTimeout' | 'redirectionLimit' | 'requestTimeout' | 'responseTimeout' | 'retries' | 'screenshotOnRunFailure' | 'slowTestThreshold' | 'scrollBehavior' | 'taskTimeout' | 'viewportHeight' | 'viewportWidth' | 'waitForAnimations'>> {
browser?: IsBrowserMatcher | IsBrowserMatcher[]
keystrokeDelay?: number
}
Expand Down
6 changes: 6 additions & 0 deletions packages/config/__snapshots__/index_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ exports['src/index .getDefaultValues returns list of public config keys 1'] = {
"e2e": {},
"env": {},
"execTimeout": 60000,
"exit": true,
"experimentalFetchPolyfill": false,
"experimentalInteractiveRunEvents": false,
"experimentalSessionSupport": false,
Expand All @@ -33,6 +34,8 @@ exports['src/index .getDefaultValues returns list of public config keys 1'] = {
"ignoreTestFiles": "*.hot-update.js",
"includeShadowDom": false,
"integrationFolder": "cypress/integration",
"isInteractive": true,
"keystrokeDelay": 0,
"modifyObstructiveCode": true,
"numTestsKeptInMemory": 50,
"pageLoadTimeout": 60000,
Expand Down Expand Up @@ -97,6 +100,7 @@ exports['src/index .getPublicConfigKeys returns list of public config keys 1'] =
"e2e",
"env",
"execTimeout",
"exit",
"experimentalFetchPolyfill",
"experimentalInteractiveRunEvents",
"experimentalSessionSupport",
Expand All @@ -107,6 +111,7 @@ exports['src/index .getPublicConfigKeys returns list of public config keys 1'] =
"ignoreTestFiles",
"includeShadowDom",
"integrationFolder",
"keystrokeDelay",
"modifyObstructiveCode",
"nodeVersion",
"numTestsKeptInMemory",
Expand Down Expand Up @@ -142,5 +147,6 @@ exports['src/index .getPublicConfigKeys returns list of public config keys 1'] =
"watchForFileChanges",
"browsers",
"hosts",
"isInteractive",
"modifyObstructiveCode"
]
2 changes: 1 addition & 1 deletion packages/config/__snapshots__/validation_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,4 +154,4 @@ Expected \`mockConfigKey\` to be a fully qualified URL (starting with \`http://\

exports['empty string'] = `
Expected \`mockConfigKey\` to be a fully qualified URL (starting with \`http://\` or \`https://\`). Instead the value was: \`""\`
`
`
13 changes: 13 additions & 0 deletions packages/config/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const breakingKeys = _.map(breakingOptions, 'name')
const defaultValues = createIndex(options, 'name', 'defaultValue')
const publicConfigKeys = _(options).reject({ isInternal: true }).map('name').value()
const validationRules = createIndex(options, 'name', 'validation')
const testConfigOverrideOptions = createIndex(options, 'name', 'canUpdateDuringTestTime')

module.exports = {
allowed: (obj = {}) => {
Expand Down Expand Up @@ -101,4 +102,16 @@ module.exports = {
}
})
},

validateNoReadOnlyConfig: (config, onErr) => {
let errProperty

Object.keys(config).some((option) => {
return errProperty = testConfigOverrideOptions[option] === false ? option : undefined
})
davidmunechika marked this conversation as resolved.
Show resolved Hide resolved

if (errProperty) {
return onErr(errProperty)
}
},
}
Loading