karma-runner/karma

karma watch tends to fail with large streamed bundles

Open

#2420 opened on Oct 25, 2016

View on GitHub
 (2 comments) (0 reactions) (0 assignees)JavaScript (11,918 stars) (1,703 forks)batch import
help wantedtype: feature

Description

i currently use gulp to produce two large JS bundles from TypeScript with browserify and factor-bundle. One bundle has all the main code and the other has all the specs.

The problem is when I use watch mode and update the bundles, karma detects two file change events on both files. I notice karma picks up the first change where the file is empty. This is confirmed by doing a readFileSync around here. Additionally, the syntax error message from the test execution also confirms this (i.e. Unexpected end of input).

Setting autoWatchBatchDelay to a higher number doesn't mitigate this problem. There is usually a 0.5 second delay between the first change event (empty file) and the second one (file generated). I'm not exactly sure what's going on there (maybe there's a race condition somewhere?) I remember adding a console.log(self.files) somewhere in the aforementioned section of code and since the output is very long, it takes time to flush to the terminal and the problem stops occurring (however waiting a long time is not a very productive activity!)

By enabling awaitWriteFinish in chokidar, the problem is mitigated. Maybe this is the solution?

https://github.com/karma-runner/karma/compare/master...khoomeister:ck-awaitwritefinish#diff-3c250c1426c199f7eccf17c774f0adfaR84

It'd be great to find a permanent fix for this as this is vital to our TDD workflow.

Contributor guide