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

Can't load custom configuration with nesting via plugins/index.js #4894

Closed
jsdw opened this issue Aug 1, 2019 · 1 comment
Closed

Can't load custom configuration with nesting via plugins/index.js #4894

jsdw opened this issue Aug 1, 2019 · 1 comment

Comments

@jsdw
Copy link

jsdw commented Aug 1, 2019

Current behavior:

I would like to load some custom confiuration that's required across a bunch of tests (test user credentials for instance). To do this, I tried extending plugins/index.js to return the config I wanted. So, I modify plugins/index.js to return my nested config like so:

module.exports = (on, config) => {
  return { lark: { foo: 2 } }
}

But then when I try running Cypress I get the error (with stack trace):

Cannot set property 'foo' of undefined
TypeError: Cannot set property 'foo' of undefined
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:300:37
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:4905:15
    at baseForOwn (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:2990:24)
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:4874:18
    at Function.forEach (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:9342:14)
    at setResolvedOn (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:296:18)
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:298:20
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:4905:15
    at baseForOwn (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:2990:24)
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:4874:18
    at Function.forEach (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/lodash/lodash.js:9342:14)
    at setResolvedOn (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:296:18)
    at Object.updateWithPluginValues (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/config.js:307:7)
    at /Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/lib/project.js:128:27
    at tryCatcher (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:510:31)
    at Promise._settlePromise (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:567:18)
    at Promise._settlePromise0 (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:612:10)
    at Promise._settlePromises (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:691:18)
    at Async._drainQueue (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/Users/james.wilson/Library/Caches/Cypress/3.4.1/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)

When simplifying the case to be:

module.exports = (on, config) => {
  return { foo: 2 }
}

The config is loaded without issue.

Desired behavior:

I would expect/hope that I can return custom config with some degree of nesting in it, so that I can then use this config throughout the tests.

Steps to reproduce: (app code and test code)

From a new Cypress project, set the content of plugins/index.js to be:

module.exports = (on, config) => {
  return { lark: { foo: 2 } }
}

And then run

npx cypress run

Versions

Cypress package version: 3.4.1
Cypress binary version: 3.4.1

@jsdw
Copy link
Author

jsdw commented Aug 1, 2019

Closing as it's a duplicate of #1736, which contains a workaround (woop!)

@jsdw jsdw closed this as completed Aug 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant