Karma launcher: Waiting 15 seconds - phantomjs

With the new karma launcher for phantomJS, I am getting an annoying "Waiting 15 seconds" every time I run the tests.
The only page remotely relevant to this problem is here: https://github.com/karma-runner/karma/issues/1545
I've swapped node and karma versions a few times to try to get it to work without success. Has anyone encountered this issue?
Here's the combination of tools I'm using:
Node version: v0.10.40
karma: 0.13.15
karma-chrome-launcher: 0.2.2
karma-jasmine: 0.3.6
karma-phantomjs-launcher: 0.2.1
26 01 2016 15:06:21.897:INFO [karma]: Karma v0.13.15 server started at http://localhost:9877/karma/
26 01 2016 15:06:21.897:INFO [launcher]: Starting browser PhantomJS
26 01 2016 15:06:21.905:INFO [phantomjs.launcher]: ACTION REQUIRED:
26 01 2016 15:06:21.905:INFO [phantomjs.launcher]:
26 01 2016 15:06:21.905:INFO [phantomjs.launcher]: Launch browser at
26 01 2016 15:06:21.905:INFO [phantomjs.launcher]: http://localhost:9000/webkit/inspector/inspector.html?page=2
26 01 2016 15:06:21.905:INFO [phantomjs.launcher]:
26 01 2016 15:06:21.906:INFO [phantomjs.launcher]: Waiting 15 seconds ...

I'm using the karma-phantomjs2-launcher and you get the "waiting 15 seconds" message when debug setting is set to true. Flicking it to false got rid of the message in my case.

I would not recommend to use phantomJS. People report that its functionality can differ from Chrome or other browsers. Also you need to download it, which may fail to resume on errors.
It is more robust and reliable to use Chrome and any other real browsers you want to support. In fact, it is the main strength of Karma that you run your tests in real browsers.
Here is a minimal setup I wrote to get your started quickly, that you can also add to your current project with the single command
npm install min-karma -D
It uses Chrome but you can add any other supported browser.
It definitely will not let you wait more than a second.

Related

JMeter web driver logging

Is there a way to suppress output from the web driver - e.g.
Feb 09, 2023 1:22:13 PM org.openqa.selenium.chromium.ChromiumDriver lambda$new$3
WARNING: Unable to find version of CDP to use for . You may need to include a dependency on a specific version of the CDP using something similar to `org.seleniumhq.selenium:selenium-devtools-v86:4.7.2` where the version ("v86") matches the version of the chromium-based browser you're using and the version number of the artifact is the same as Selenium's.
Feb 09, 2023 1:22:14 PM org.openqa.selenium.devtools.CdpVersionFinder findNearestMatch
WARNING: Unable to find CDP implementation matching 110
Feb 09, 2023 1:22:14 PM org.openqa.selenium.chromium.ChromiumDriver lambda$new$3
WARNING: Unable to find version of CDP to use for . You may need to include a dependency on a specific version of the CDP using something similar to `org.seleniumhq.selenium:selenium-devtools-v86:4.7.2` where the version ("v86") matches the version of the chromium-based browser you're using and the version number of the artifact is the same as Selenium's.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
ChromeDriver was started successfully.
If this is really what you want:
Add a setUp Thread Group to your Test Plan
Add JSR223 Sampler to the Thread Group
Put the following code into "Script" area:
java.util.logging.LogManager.getLogManager().reset()
def globalLogger = java.util.logging.Logger.getLogger(java.util.logging.Logger.GLOBAL_LOGGER_NAME)
globalLogger.setLevel(java.util.logging.Level.OFF)
Next time you run your test all Selenium-related logging will go away.

Getting file information during a Karma test

I have a large number of files that I run through Karma and Jasmine for testing†. In the middle of the process I get an uncaught error which halts the project. This means that I cannot easily determine which file is causing the fatal error. Is there a way to print out the name of a file as it is being tested or get similar information that I can analyze?
† More specifically, I am running an Angular project using Angular CLI, which employs Karma and Jasmine.
Edit:
I have been asked for screenshots and code, but there's not much to show. When I run karma I get this response:
19 09 2017 00:04:18.279:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
19 09 2017 00:04:18.281:INFO [launcher]: Launching browser Chrome with unlimited concurrency
19 09 2017 00:04:18.285:INFO [launcher]: Starting browser Chrome
19 09 2017 00:04:42.723:INFO [Chrome 61.0.3163 (Mac OS X 10.12.6)]: Connected on socket Ml1MJK4zgJuXwLyxAAAA with id 34080921
................................................................................
................................................................................
................................................................................
.....................................................Chrome 61.0.3163 (Mac OS X 10.12.6) ERROR
Uncaught Error: No component factory found for FooComponent. Did you add it to #NgModule.entryComponents?
at http://localhost:9876/_karma_webpack_/polyfills.bundle.js:8310
Chrome 61.0.3163 (Mac OS X 10.12.6) ERROR
Uncaught Error: No component factory found for FooComponent. Did you add it to #NgModule.entryComponents?
at http://localhost:9876/_karma_webpack_/polyfills.bundle.js:8310
Chrome 61.0.3163 (Mac OS X 10.12.6): Executed 293 of 739 (skipped 44) ERROR (10.515 secs / 1.461 secs)
I am running 739 unit tests and the process halts after 293. I cannot find the file causing the FooComponent error (it's something subtle and cannot be identified with a keyword search). This is why I need to know the name of the file, or the test, or the something that is causing the error.
You could use a custom Karma reporter to view more details on which tests are failing etc.
One option is karma-spec-reporter.
Installation and usage is simple (copied from the github README):
npm install karma-spec-reporter --save-dev
Then add 'spec' to reporters in karma.conf.js, e.g.
reporters: ['spec']
There are also other options for Karma reporters.
Karma-mocha-reporter is one option.
If you're after a bit of a laugh, you could also look at the karma-nyan-reporter for a bit of nyan-cat relief. Perhaps surprisingly, it also seems to give some useful error logging as well.

Using aurelia-materialize-bridge with karma testing

I am using aurelia-materialize-bridge with my Aurelia application. It is a UI toolkit. I configured it according to the Aurelia-Cli installation instructions in the guide with some success. Pages load correctly and most components seem to work.
When I run the unit tests au test, I get a handfull of 404 errors.
19 10 2016 19:51:18.049:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
19 10 2016 19:51:18.065:INFO [launcher]: Starting browser Chrome
19 10 2016 19:51:19.284:INFO [Chrome 53.0.2785 (Windows 10 0.0.0)]: Connected on socket /#ONnYj7PlSdj5wYRyAAAA with id 80681297
19 10 2016 19:51:19.510:WARN [web-server]: 404: /base/src/jquery.hammer.js
19 10 2016 19:51:19.511:WARN [web-server]: 404: /base/src/jquery.timeago.js
19 10 2016 19:51:19.512:WARN [web-server]: 404: /base/src/picker.js
19 10 2016 19:51:19.513:WARN [web-server]: 404: /base/src/picker.date.js
19 10 2016 19:51:19.513:WARN [web-server]: 404: /base/src/velocity.js
Chrome 53.0.2785 (Windows 10 0.0.0) ERROR
Uncaught Error: Script error for "jquery.hammer"
http://requirejs.org/docs/errors.html#scripterror
at F:/Oct2016/I Know Sports Too/scripts/vendor-bundle.js:3763
How can I get past these 404 errors and run tests? The missing scripts all can be found in the materialize-css.js file in the root.
In karma.config.js, I was added two lines to splice in the materialize-bundle after the entryBundle.
let otherBundle = path.join(output, 'materialize-bundle.js');
let entryBundle = appSrc.splice(entryIndex, 1)[0];
let files = [entryBundle, otherBundle].concat(testSrc).concat(appSrc);
It sems to work. Post your answers if you've got a better way.
Adding the materialize-bundle (which seems to already be pulled in by project.build.bundles on #12) seems to cause a new problem:
Chrome 54.0.2840 (Windows 10 0.0.0) ERROR
Uncaught Error: Mismatched anonymous define() module: function (){return t(e)}
http://requirejs.org/docs/errors.html#mismatch
at c:/Users/shart/Projects/federal-identity/newton/scripts/vendor-bundle.js:10423
Hopefully someone else out there has experienced this. If anyone finds a solution please post.

Running Jboss 7.1.1 on Fedora 20 as service

I have encountered a problem with running Jboss as service on Fedora. Here is the log I have after using command: systemctl status jboss-as.service
Here is the log I have been receiving:
jboss-as.service - SYSV: JBoss AS Standalone
Loaded: loaded (/etc/rc.d/init.d/jboss-as)
Active: failed (Result: resources) since Thu 2014-01-16 09:31:54 CET; 46min ago
Process: 501 ExecStart=/etc/rc.d/init.d/jboss-as start (code=exited, status=0/SUCCESS)
Jan 16 09:31:22 servername.domain systemd[1]: Starting SYSV: JBoss AS Standalone...
Jan 16 09:31:23 servername.domain jboss-as[501]: Starting jboss-as: chown: missing operand after ‘/var/run/jboss-as’
Jan 16 09:31:23 servername.domain jboss-as[501]: Try 'chown --help' for more information.
Jan 16 09:31:54 servername.domain jboss-as[501]: [ OK ]
Jan 16 09:31:54 servername.domain systemd[1]: PID file /var/run/jboss-as/jboss-as-standalone.pid not readable (yet?) after start.
Jan 16 09:31:54 servername.domain systemd[1]: Failed to start SYSV: JBoss AS Standalone.
Jan 16 09:31:54 servername.domain systemd[1]: Unit jboss-as.service entered failed state.
First, I tried to find a solution for the chown: missin operand after ... problem and found something: here but it did not help. And also, I was looking for the answer for the PID file problem but it does not even exist in in the location: var/run/jboss-as/
This is because the startup script uses the variable $JBOSS_USER but it is not defined inside the script.
Please put in the file /etc/jboss-as/jboss-as.conf the following line:
JBOSS_USER=root
(change the root with other dedicated linux user e.g. jboss-as)
It looks like the service startup script expects to be able to write to the /var/run/jboss-as directory but doesn't have permissions to do so.
In your place I'd ensure that this directory is owned by the user that runs JBoss and that it is writable.
Check that there aren't other errors (particularly missing or incorrect paths) in your /etc/rc.d/init.d/jboss-as file (I assume you copied it from the jboss install folder to create a startup script.
I had the same issue until I fixed a completely unrelated link in that script, then it went away.
In Centos 7, if you straight way copying the jboss-as-standalone.sh in /etc/rc.d/init.d/, ensure JBOSS_CONF and JBOSS_HOME path is correct.
For me, it was with systemd. When I set the service y put wrong the PID File.
Example:
In the service was like
/var/run/jboss-as/jboss-as-standalone.pid
But in the script was like
/var/run/jboss-as/jboss-as.pid

Selenium test fails to find the string

I have a Capybara test which constantly fails when running on the CI server with the following error:
expected to find text "Mon, Wed, Fri from 12:00 to 15:30" in "Schedules Add a new schedule Everyday in 10:25 Mon, Wed, Fri from 12:00 to 15:30"(RSpec::Expectations::ExpectationNotMetError)
The line where it happens is a simple expectation:
expect(page).to have_content(content)
It seems very strange because it always passes on my computer.
Environment: Ubuntu, Jenkins, Rails 3.2, Firefox 26 with xvbf, Selenium, Capybara, RSpec.
Does anyone knows what can it be the reason of such behavior?