cypress-io / cypress

Fast, easy and reliable testing for anything that runs in a browser.
https://cypress.io
MIT License
46.8k stars 3.17k forks source link

Console info/warnings in STDOUT about config.browsers and react #4255

Closed rhythmicdevil closed 4 years ago

rhythmicdevil commented 5 years ago

Current behavior:

Execute the tests in a Docker container and we get the following info for each test.

Running: user_class/add_user_class_spec.js...                       (5 of 11) 
[185:0520/044143.433372:INFO:CONSOLE(162422)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools", source: http://uitesting.qa.etisoftware.local/__cypress/runner/cypress_runner.js (162422)
[185:0520/044144.300086:INFO:CONSOLE(118886)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools", source: http://uitesting.qa.etisoftware.local/__cypress/runner/cypress_runner.js (118886)
[185:0520/044144.548030:INFO:CONSOLE(96850)] "Warning: Failed prop type: The prop `config.browsers` is marked as required in `App`, but its value is `undefined`.
    in App (created by Container)
    in Container", source: http://uitesting.qa.etisoftware.local/__cypress/runner/cypress_runner.js (96850)

Desired behavior:

I'd like to know what I need to do to remedy this.

I can see that it recommending I "download React DevTools for a better development experience", but this is not relevant when I am running in Docker in my nightly jobs. Where do I set the value for config.browsers? I dont anything about this in the changelog for 3.0.3. I dont see it anywhere in the documentation for config.

Other info

I run my tests nightly with the following command:

docker run --name launchPadUiTest -v /home/jenkins/workspace/UiTestingPipelines/LaunchPadUiTestingPipeline:/ui_testing eti-cypress:latest /bin/bash -c '/node_modules/.bin/cypress run --project /ui_testing'

When we updated to 3.0.3 I rebuilt our image.

FROM cypress/browsers:chrome69
RUN npm i cypress
RUN npm install wait-on
docker build -t eti-cypress .

This is the header from the output I see when running in Docker

(Run Starting)

  ┌────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:  3.3.0                                                            │
  │ Browser:  Electron 61 (headless)                                           │
  │ Specs:    1 found (login/login_spec.js)                                    │
  └────────────────────────────────────────────────────────────────────────────┘

I dont see the info messages when running in my local development environment. This is the output header when I run locally

  │ Cypress:    3.3.0                                                                              │
  │ Browser:    Electron 61 (headless)                                                             │
  │ Specs:      11 found (company_profile/company_profile_spec.js, reporting/reporting_config_spe… │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘

Versions

Cypress - 3.0.3 CentOS - 7 The browser is the default, Electron.

jennifer-shehane commented 5 years ago

Hey @rhythmicdevil, do you have any code within your cypress/plugins/index.js file?

@bahmutov Is this possible that the browser console logs are set up to log from the Docker container?

bahmutov commented 5 years ago

I don't see the browser config, but I do see React console.log message even when running on Mac, we are investigating

On Mon, May 20, 2019 at 10:28 AM Jennifer Shehane notifications@github.com wrote:

Hey @rhythmicdevil https://github.com/rhythmicdevil, do you have any code within your cypress/plugins/index.js file?

@bahmutov https://github.com/bahmutov Is this possible that the browser console logs are set up to log from the Docker container?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/cypress-io/cypress/issues/4255?email_source=notifications&email_token=AAQ4BJSASEDV3IUDKOROXDTPWKYP3A5CNFSM4HOBD5Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVZAE3Q#issuecomment-494010990, or mute the thread https://github.com/notifications/unsubscribe-auth/AAQ4BJWYUF224FK3VR7HHOLPWKYP3ANCNFSM4HOBD5QQ .

-- Dr. Gleb Bahmutov, PhD

Schedule video chat / phone call / meeting with me via https://calendly.com/bahmutov gleb.bahmutov@gmail.com @bahmutov https://twitter.com/@bahmutov https://glebbahmutov.com/ https://glebbahmutov.com/blog https://github.com/bahmutov

rhythmicdevil commented 5 years ago

This is the content of the file cypress/plugins/index.js

    // ***********************************************************
    // This example plugins/index.js can be used to load plugins
    //
    // You can change the location of this file or turn off loading
    // the plugins file with the 'pluginsFile' configuration option.
    //
    // You can read more here:
    // https://on.cypress.io/plugins-guide
    // ***********************************************************

    // This function is called when a project is opened or re-opened (e.g. due to
    // the project's config changing)

    module.exports = (on, config) => {
      // `on` is used to hook into various events Cypress emits
      // `config` is the resolved Cypress config
    }
jennifer-shehane commented 5 years ago

@rhythmicdevil Thanks, the plugins look good. It seems @bahmutov is able to partially reproduce the error, so now we can investigate.

brian-mann commented 5 years ago

There is a bug in 3.3.0 where we are accidentally leaking an environment variable that causes this when the verify and run stage is run together.

If you split out cypress verify from cypress run as a different docker step, it won't log this out. We'll get this fixed in a 3.3.1 patch.

rhythmicdevil commented 5 years ago

Ok great. Thanks for the info.

cypress-bot[bot] commented 5 years ago

The code for this is done in cypress-io/cypress#4281, but has yet to be released. We'll update this issue and reference the changelog when it's released.

shavo007 commented 5 years ago

i get that issue too


[301:0522/234255.083832:INFO:CONSOLE(162422)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools", source: xx/__cypress/runner/cypress_runner.js (162422)
--
  | [301:0522/234255.631575:INFO:CONSOLE(118886)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools", source: xx/__cypress/runner/cypress_runner.js (118886)
  | [301:0522/234255.732192:INFO:CONSOLE(96850)] "Warning: Failed prop type: The prop `config.browsers` is marked as required in `App`, but its value is `undefined`.
  | in App (created by Container)
  | in Container", source: xx__cypress/runner/cypress_runner.js (96850)
  | [301:0522/234259.379345:INFO:CONSOLE(61945)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools",
cypress-bot[bot] commented 5 years ago

Released in 3.3.1.

iegik commented 5 years ago

Same info message after upgrading to 3.3.1 in DEBUG=cypress:* mode:

cypress:server:browsers:electron console message: { column: 15, level: 'error', line: 96956, source: 'console-api', text: 'Warning: Failed prop type: The prop `config.browsers` is marked as required in `App`, but its value is `undefined`.\n    in App (created by Container)\n    in Container', url: 'http://localhost:8080/__cypress/runner/cypress_runner.js' } +67ms

Jast warning.

jennifer-shehane commented 5 years ago

Hey @iegik, it is intended that all the warning logs do log out when the DEBUG environment variable is set. This i expected behavior.

The original issue was that this warning logged when no DEBUG lot had been set.

bcnichols3 commented 5 years ago

Hi, am I missing a setting? I just upgraded to 3.3.1 and still getting noisy logs


[52894:0614/104827.806631:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
[52894:0614/104827.806703:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
[52894:0614/104827.806726:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glClear: framebuffer incomplete
[52894:0614/104827.806745:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
[52894:0614/104827.806765:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
[52894:0614/104827.806786:ERROR:gles2_cmd_decoder.cc(4439)] [.RenderWorker-0x7fb79780c200.GpuRasterization]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : glDrawElements: framebuffer incomplete
[52892:0614/104828.340283:INFO:CONSOLE(162528)] "%cDownload the React DevTools for a better development experience: https://fb.me/react-devtools"```
dialex commented 5 years ago

It's not fixed! I'm using 3.3.2 and I have the same issue.

flotwig commented 5 years ago

Probably somehow related to the changes in #4165. This code controls what stderr from the Electron process is printed and what is suppressed:

https://github.com/cypress-io/cypress/blob/bfec784e7a693ad8b153f2711270f5a491a83737/cli/lib/exec/spawn.js#L141-L158

If you comment out line 157, no stderr is printed. But I'm not sure what stderr should remain and what stderr should be removed. The problem is probably somewhere else in the PR, since it didn't change this code section at all.

jennifer-shehane commented 4 years ago

Closing as resolved since there have been no comments on this in a year. Likely this output is no longer shown since one of our Electron upgrades.

If you're experiencing a bug similar to this in Cypress, please open a new issue with a fully reproducible example that we can run. There may be a specific edge case with the issue that we need more detail to fix.