Giter Club home page Giter Club logo

boot-cljs-test's People

Contributors

antoniskalou avatar crisptrutski avatar deraen avatar livtanong avatar martinklepsch avatar miikka avatar sinistral avatar thedavidmeister avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boot-cljs-test's Issues

no stacktrace & test abort in phantomjs

Hi again, I have another problem, using phantomjs:

With the same setup that in #58 but without :js-env option, I get

  • an error with no stack-trace nor info on where to look for
  • the test runner seem's to abort, I have half a dozen namespaces that do not show up.

Here's the output:

;; ======================================================================
;; Testing with Phantom:

Testing frontend.storage-test

Testing budb.cljs.firebase-store-test
DEBUG [frontend.firebase.core:36] - Loading Firebase with {:apiKey "...", :authDomain "....", :databaseURL "....", :storageBucket "...", :messagingSenderId "..."}
Error: No protocol method IDeref.-deref defined for type null:

  phantomjs://code/phantom8974099379113651456.js:81 in onError
Compiling ClojureScript...
• cljs_test/generated_test_suite.js
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer.utils, being replaced by: #'clojure.tools.analyzer.utils/boolean?
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer, being replaced by: #'clojure.tools.analyzer.utils/boolean?
WARNING: -dissoc already refers to: cljs.core/-dissoc being replaced by: konserve.protocols/-dissoc at line 3 /Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/re3/-lhed9a/cljs_test/generated_test_suite.out/konserve/protocols.cljc
Compiling {sass}... 17 changed files.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Elapsed time: 92.873 sec

I rely a lot on core.async and async tests, could this be an issue?
Thanks again for taking a look,

Unable to set :closure-defines with the cljs-opts parameter

Tried to pass on some closure definitions to the cljs compiler like that

        (test-cljs :js-env :phantom
                   :cljs-opts {:compiler-options {:closure-defines {"PORT" 1234
                                                                                                   "HOST" "just.a.test.host"}}})))

also tried with

        (test-cljs :js-env :phantom
                   :cljs-opts {:closure-defines {"PORT" 1234
                                                                   "HOST" "just.a.test.host"}}})))

When running the tests, these constants aren't defined at all. Am I missing something?

Running in node?

I have a test suite that runs and passes with {:js-env :phantom}, however with this task:

(deftask run-cljs-node-tests
  "Run cljs node.js tests"
  []
  (task-options! test-cljs {:js-env :node})
  (test-cljs))

I got the following error message:

boot testing run-cljs-node-tests
             clojure.lang.ExceptionInfo: java.lang.AssertionError: Assert failed: node should be used with :target :nodejs and :hashbang false
                                         (and (= :nodejs (:target opts)) (false? (:hashbang opts)))
    data: {:file
           "/var/folders/3h/xfhx4g953mv6l68c_qywbz4m0000gn/T/boot.user3520479088789272618.clj",
           :line 57}
java.util.concurrent.ExecutionException: java.lang.AssertionError: Assert failed: node should be used with :target :nodejs and :hashbang false
                                         (and (= :nodejs (:target opts)) (false? (:hashbang opts)))
               java.lang.AssertionError: Assert failed: node should be used with :target :nodejs and :hashbang false
                                         (and (= :nodejs (:target opts)) (false? (:hashbang opts)))
          doo.core/assert-compiler-opts                          core.clj:  103
                                    ...                                        
crisptrutski.boot-cljs-test/eval1483/fn                boot_cljs_test.clj:   88
                                    ...                                        
crisptrutski.boot-cljs-test/eval1515/fn                boot_cljs_test.clj:  137
                                    ...                                        
                     clojure.core/apply                          core.clj:  630
            boot.user/eval1677/fn/fn/fn  boot.user3520479088789272618.clj:   51
                                    ...                                        
                  boot.user/eval1677/fn  boot.user3520479088789272618.clj:   51
                                    ...                                        
                     clojure.core/apply                          core.clj:  630
              boot.core/construct-tasks                          core.clj:  684
                                    ...                                        
                     clojure.core/apply                          core.clj:  630
                      boot.core/boot/fn                          core.clj:  712
    clojure.core/binding-conveyor-fn/fn                          core.clj: 1916
                                    ...                                        

Updating the options to match what was suggested with {:js-env :nodejs}, gives different error:

boot testing run-cljs-node-tests
Writing suite.cljs...
Writing output.cljs.edn...
Compiling ClojureScript...
• output.js
Running cljs tests...             clojure.lang.ExceptionInfo: java.lang.AssertionError: Assert failed: (valid-js-env? js-env)
    data: {:file
           "/var/folders/3h/xfhx4g953mv6l68c_qywbz4m0000gn/T/boot.user7375995942041478656.clj",
           :line 57}
java.util.concurrent.ExecutionException: java.lang.AssertionError: Assert failed: (valid-js-env? js-env)
               java.lang.AssertionError: Assert failed: (valid-js-env? js-env)
                          doo.core/run-script            core.clj:  123
                                          ...                          
crisptrutski.boot-cljs-test/eval1483/fn/fn/fn  boot_cljs_test.clj:   98
           adzerk.boot-cljs/eval1333/fn/fn/fn       boot_cljs.clj:  199
           adzerk.boot-cljs/eval1291/fn/fn/fn       boot_cljs.clj:  133
crisptrutski.boot-cljs-test/eval1453/fn/fn/fn  boot_cljs_test.clj:   75
                          boot.core/run-tasks            core.clj:  701
                            boot.core/boot/fn            core.clj:  711
          clojure.core/binding-conveyor-fn/fn            core.clj: 1916
                                          ...                          

Am I missing something on how to setup the node env?

Support Karma runner

Doo run-script starts new Karma instance for each run. Using install! and karma-run! it is possible to only start one instance and run tests in that.

WIP code here: Deraen@e749343

Also fixes #31 by copying node_modules (and everything) to a single tmp-dir for Karma.

AccessDeniedException with link to node_modules

With the latest version (0.3.1), I get the following exception when invoking test-cljs:

            crisptrutski.boot-cljs-test/run-tests!              boot_cljs_test.clj:  139
       crisptrutski.boot-cljs-test/link-resources!              boot_cljs_test.clj:  111
                               boot.file/hard-link                        file.clj:  165
                    java.nio.file.Files.createLink                      Files.java: 1086
   sun.nio.fs.WindowsFileSystemProvider.createLink  WindowsFileSystemProvider.java:  608
  sun.nio.fs.WindowsException.rethrowAsIOException           WindowsException.java:   97
sun.nio.fs.WindowsException.translateToIOException           WindowsException.java:   83
java.nio.file.AccessDeniedException: C:\<...>\cr4\-iubjet\cljs_test\node_modules -> node_modules

Not possible to set namespaces from CLI

Because namespaces option is defined as #{str} it is not possible to define symbols of namespaces when invoking cljs-test from cli: boot test-cljs -n frontend.core-test will fail because namespace is passed in as string.

I think the correct solution here would be to define the type of namespaces argument as edn and document and assert that it is a string. It shouldn't change the behavior when task is used from clj but it allows setting namespaces from cli: boot test-cljs -n "#{frontend.core-test}" (no ' in EDN).

PhantomJS ReferenceError when using External Libraries (JayQ)

When requiring jayq.core, PhantomJS complains about missing libraries.
Is there a way to pass to PhantomJS external libraries it should load in addition to the CLJS Compiles outputs.

Writing output.cljs.edn...
Using torcaui/suite.cljs...
Compiling ClojureScript...
WARNING: Replacing ClojureScript compiler option :main with automatically set value.
• output.js
Running cljs tests...
ReferenceError: Can't find variable: jQuery

  phantomjs://code/phantom379506722135246806.js:81 in onError
Elapsed time: 2.595 sec

I know this might be a problem with the way JayQ does not package jQuery with itself but relies on you to require it.

Accessing a fileset's resource files from tests

I'm trying to set up a test system where a test case is automatically generated based on test data present in the file system including the expected output. However, I can't figure out how to access those files from within the test runner.

A simplified example:

(deftask backend-test []
  (merge-env! :source-paths ["clj/backend/src" "clj/backend/test"]
              :resource-paths ["clj/backend/fixtures"])
  (test-cljs :js-env :node :exit? true))

Directory structure of clj/backend:

|- src
|- test
|- fixtures
  |- test-data
      |- sample-input-1.edn
      |- expected-output-1.html
      |- sample-input-2.edn
      |- expected-output-2.html

Is it possible to somehow make the contents of clj/backend/fixtures accessible from the test runner so I can generate test cases based on the contents of test-data?

I saw that e.g node_modules is manually moved into the tmp dir: https://github.com/crisptrutski/boot-cljs-test/blob/master/src/crisptrutski/boot_cljs_test.clj#L136

So I guess I would somehow have to do that with the files I want to use as well?

Thank you in advance!

Running in multiple environments?

Could you add some general instructions on how to run a test-suite in multiple environments with the lower-level tasks?

I'm trying to have a task compose phantom and browser tests, but the second task picks up the js files of the first one and gives an error.

Right now I can only get both environments to work by running the individuals test tasks separately in their own boot invocation, and cleaning up the target-path in between. Though this could probably be automated, it doesn't even sound like the right way to do this!

Cheers

Support pre-existing suite files

Think this makes sense, but creates stronger doo coupling. Or perhaps we could refactor so that the doo macro is not required around suite.

Support filtering test cases (ie. the vars)

Various ideas

  • Run tests with names matching regex only
  • Run based on predicate against var (ala boot-test, although less useful in cljs)
  • Rerun only failures (for use with watch)

Update from 0.2.1 to 0.3.0 :out-file is deprecated

We have a problem switching from version "0.2.1" to version "0.3.0" of boot-cljs-test,

when we replace the option "--out-file" (allowed in "0.2.1" but deprecated in "0.3.0") with "--ids",

as suggested by the test-cljs task.

Old version of the code

New version of the code

  • created folder html/js

  • created file main.cljs.edn in html/js

  • in shopping.html, changed javascript file path from main.js to js/main.js

  • in build.boot, changed test-cljs option ":out-file main.js" to ":ids ["js/main"]"

  • in build.boot, changed test-cljs option :update-fs? from true to false

  • Error:

when we run the code, the tests are not executed and we get the following error message:

Testing with Phantom:ClojureScript could not load :main, did you forget to specify :asset-path?

ReferenceError: Can't find variable: goog 
phantomjs://code/phantom4803593222426079124.js:81 in onError

How should we modify the "test-cljs" task options in order to obtain the behaviour we had with the "0.2.1" version of boot-cljs-test?

Support dynamic namespace filtering

Since doo-run-all can take a regex to limit the namespaces to run, in some cases it may be preferable to defer filtering namespaces to runtime - the holy grail of truth.

Since we need to enumerate the namespaces anyway currently to make sure they're loaded, in most cases this is not really worth it, but perhaps it makes the most sense in the case of using explicit .cljs.edn files (where the requires are known).

Currently this plugin plays-safe and subsets namespaces to test to those directly required by the edn file, but this would be an easy way out. Other possible cases could include files defining additional namespaces (through extra ns forms or magic macros?). Not sure if these are real cases.

Using an approach like this we could even collapse generic includes and excludes into a single (though eldritch) regex.

Just capturing this idea, but it may be nonsense.

Once doo supports filtering actual test cases, this exact problem comes back with a twist though, so no thought on it is wasted.

bad interaction with boot-test?

Hi, I'm trying to use boot-cljs-test in a pipeline with boot-test. My goal is to be able to simultaneously run CLJ and CLJS test, even when using portable .cljc files. The pipeline could be something like this:

boot testing test-cljs -n <a portable namespace> test -n <a portable namespce>

The above testing task only adds test/cljc dir to :source-paths env variable. As soon as I remove the -n option like so:

boot testing test-cljs test

The test task evaluates two times any portable namespace (i.e. any .cljc file). Moreover, if I prepend test to test-cljs in the boot pipeline (e.g. boot test test-cljs) the above duplication effect disappears. The problem with this simple solution is that if any CLJ test assertion fails, test raises an exception and the test-cljs is not triggered until the failed assertion is solved.

Is there any clue for this testing scenario?

All namespaces compiled and loaded unnecessarily

As boot-cljs-test doesn't create .cljs.edn based on options but instead depends on the default one from boot-cljs, all cljs files in fileset and compiled and loaded.

Instead if would be preferred to create a cljs.edn file which only requires the output-file namespace. Then only the namespaces which are required by test namespaces are compiled and loaded.

This possibly has huge effect on performance with larger projects.

Regex error with latest version

Hello folks!

I got an error in lumo's latest build in appveyor (windows):

                              java.lang.Thread.run              Thread.java:  745
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  617
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1142
               java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                               ...                               
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2027
                                 boot.core/boot/fn                 core.clj: 1031
                               boot.core/run-tasks                 core.clj: 1021
      crisptrutski.boot-cljs-test/eval773/fn/fn/fn       boot_cljs_test.clj:  238
crisptrutski.boot-cljs-test/-prep-cljs-tests/fn/fn       boot_cljs_test.clj:  155
      crisptrutski.boot-cljs-test/ensure-suite-ns!       boot_cljs_test.clj:  127
        crisptrutski.boot-cljs-test.utils/file->ns                utils.clj:   38
                           clojure.core/re-pattern                 core.clj: 4773
                   java.util.regex.Pattern.compile             Pattern.java: 1028
                    java.util.regex.Pattern.<init>             Pattern.java: 1351
                   java.util.regex.Pattern.compile             Pattern.java: 1702
                     java.util.regex.Pattern.error             Pattern.java: 1955
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
                                        \
                                         ^
    description: "Unexpected internal error"
          index: 1
        pattern: "\\"
            clojure.lang.ExceptionInfo: Unexpected internal error near index 1
                                        \
                                         ^
    line: 220

Hopefully just a simple fix?

Confusing error around `cljs.test` not being defined

see boot-clj/boot#277

hi @hellonico 👋 😄

the message you've pasted is pretty opaque, and means that the script which ends up executing your tests is not loading the code correctly.

to give a quick overview of how this libraries is used by tenzing, the test-cljs task does the following:

  1. create runner namespace which instruments and executes all tests
  2. create compiled-js-for-tests-and-code.js
  3. execute (2) in correct environment, with appropriate shims, and appropriate reporting

the error you're seeing is occuring in (3)

so what could go wrong?

  1. the js may have failed to compile
  2. the compiled js may have errors (eg see http://dev.clojure.org/jira/browse/CLJS-1399 where emitted js is not valid and will not execute)
  3. the compiled code may break in the environment (eg. shim is not strong enough)
  4. the particular runner may have a bug when combined with relative paths, given optimization level, or even the combination (eg. rhino)

Happily doo will soon improve to provide better diagnostic messages (see bensu/doo#21), to tell these cases apart

things to try:

  1. use another javascript environment (eg slimer, phantom)
  2. use another optimization level (eg whitespace)
  3. upgrading to latest snapshot of boot-cljs-test

if you can provide more details here or even a reproducing repo, i'd be glad to help you debug further.

@martinklepsch we should probably cut a release to get martinklepsch/tenzing#40 out, as i think the old defaults are probably the issue

Support -vv style verbosity control

Doo takes two output options: debug and verbose.

The most naturally-boot way to handle this would be via a "stacking" log level argument:

boot cljs-test                verbose=false, debug=false
boot cljs-test -v             verbose=true,  debug=false
boot cljs-test -vv            verbose=true,  debug=true

show test output as it is available

If you just have Running cljs tests... with no further output for 10 minutes or more, Travis will cancel and fail the whole build.

All you need to do to avoid this is make sure there is output to the terminal more than once per 10 minutes.

doo not found in chrome

Hi, thanks for sharing your lib. I got a few problems that prevents me from using it,
when I use chrome, I get a doo not found in chrome, and a lot of warnings for empty pattern matching:

Using [crisptrutski/boot-cljs-test "0.3.0"]

(deftask tests []
  (comp
    (in-env :env :dev)
    (watch)
    (speak)
    (test-cljs :js-env :chrome)
    (build)))

(deftask build []
  (comp (speak)
        (cljs)
        (sass)))
› boot tests                                                               ☹
cli: option resources: flags should not have optargs, got RESOURCES
Adding: ([doo "0.1.7"]) to :dependencies

Starting file watcher (CTRL-C to quit)...

Compiling ClojureScript...
• cljs_test/generated_test_suite.js
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer.utils, being replaced by: #'clojure.tools.analyzer.utils/boolean?
WARNING: boolean? already refers to: #'clojure.core/boolean? in namespace: clojure.tools.analyzer, being replaced by: #'clojure.tools.analyzer.utils/boolean?
WARNING: -dissoc already refers to: cljs.core/-dissoc being replaced by: konserve.protocols/-dissoc at line 3 /Users/laurent/.boot/cache/tmp/Users/laurent/dev/eva/eva-frontend/qv6/l66cqp/cljs_test/generated_test_suite.out/konserve/protocols.cljc

;; ======================================================================
;; Testing with Chrome:

[doo] Started karma server
[doo] Started karma run
Writing main.cljs.edn...
Compiling ClojureScript...
• main.js
07 04 2017 11:25:11.576:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/goog/base.js" does not match any file.
07 04 2017 11:25:11.580:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/cljs_deps.js" does not match any file.
07 04 2017 11:25:11.581:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.js" does not match any file.
07 04 2017 11:25:11.619:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/**" does not match any file.
07 04 2017 11:25:11.634:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/**/*.js" does not match any file.
07 04 2017 11:25:11.635:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/*.js" does not match any file.
07 04 2017 11:25:13.330:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/goog/base.js" does not match any file.
07 04 2017 11:25:13.337:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/cljs_deps.js" does not match any file.
07 04 2017 11:25:13.339:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.js" does not match any file.
07 04 2017 11:25:13.367:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/**" does not match any file.
07 04 2017 11:25:13.379:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/**/*.js" does not match any file.
07 04 2017 11:25:13.379:WARN [watcher]: Pattern "/Users/laurent/.boot/cache/tmp/Users/laurent/dev/proj/proj-frontend/qv6/-ueasqk/cljs_test/generated_test_suite.out/*.js" does not match any file.
Chrome 57.0.2987 (Mac OS X 10.12.4) ERROR
  Uncaught ReferenceError: doo is not defined
  at http://localhost:9876/context.html:1

I installed karm, karma-cljs-test and chromedriver, am I missing something?
Thanks for taking a look,

Don't leak dependencies into later tasks (eg. aot, uberjar)

Currently boot-cljs-test adds dependency to doo directly using set-env!. This causes side-effects in case if cljs-test is being run as part of package task, the doo dependency would be added to resulting uberjar.

Simple workaround would be to add the dependency with :scope "test" but even then if would case side-effect on classpath.

Proper way would be to use pods to isolate this dependency.

permit doo options to be set

I've run into a situation in which I need to set the command line options for the phantomjs runner, specifically I need to turn off the web security for a set of tests that hit an external server. Doo provides the ability to do this via the :paths option, but there is no way to feed this through the current version of the test-cljs task.

I currently have a fork where the doo options can be set. These options are simply merged into the options passed to run-script (currently only :ext-dir). If that is acceptable, I can create a PR for the change.

Standardise task options

I can't really understand why both boot-cljs-test and boot-test run all project namespace when the -n option is not set to a specific test namespace. Is it not a waste of time, especially in a TDD workflow scenario?

I know that to test private symbols you need to test them inside the defining namespace, but I never met a source code doing that. On the contrary, most of the time people create a test directory layout like the following:

  • test
    • clj
    • cljs
    • cljc

where all the application tests are confined. IMHO it would be better to have an option to say where the test namespaces are located and interpret the absence of the -n option as "run all the namespace in the test directories. Is my opinion so wrong?

Don't actually build cljs

Since this can now run :none builds there is no need to compile the build as part of the test task, right?

Ensure karma is installed

This is something doo can take care of, just need to call the appropriate method at the right time.

Side note - lein doo only seems to do this in one of the branches (auto vs once) - that's probably a small bug to be addressed too

Support `:debug?` option to control verbosity

Maybe just support granular levels of verbosity (-v, -vv, -vvv) which map onto doo's :verbose and :debug params, and similarly affect info and debug and trace logging in the build tasks.

Ensure working correctly with CI

  1. Test that return code from doo is exposed
  2. Test that it composes with .clj test task

(1) Seems to not be working:

$ boot test     
. . .                                                                                                                                                   
1 failures, 0 errors.
$  echo $?
0

Work with speak on errors

Currently when using this task with speak the sound always plays success even if tests fail. It would be neat if errors (warnings if there's a use case too?) are supported as well.

Break `doo.core/run-script` call into own task

This trivial change would improve the end user experience better for setting specific keys like :alias and :paths globally.

Perhaps args-of-demeter cascading down into test-cljs signature is also justified.

Passing :namespaces is broken

boot test-cljs -n org.martinklepsch.cc-set-test
Writing suite.cljs...
Writing output.cljs.edn...
Compiling ClojureScript...
• output.js
Running cljs tests...

And then it's stuck 😄

doo error on windows

I've simplified https://github.com/aatree/aautil/ to the point where it is just a test on a very small .cljs file.

II was told on the clojurians/boot channel that it runs ok on non-windows. On windows, I am getting

Writing output.cljs.edn...
Writing clj_test\suite.cljs...
Compiling ClojureScript...
WARNING: Replacing ClojureScript compiler option :main with automatically set value.
ò output.js
Running cljs tests...
ERROR: doo was not loaded from the compiled script.

Make sure you start your tests using doo-tests or doo-all-tests
and that you include that file in your build

Ran on boot-cljs-test 0.2.1 and 0.2.2-SNAPSHOT to same effect. Got null pointer on 0.3.0-SNAPSHOT:

Writing cljs_test\suite.cljs...
Writing cljs_test\suite.cljs.edn...
Writing suite.cljs.edn...
Compiling ClojureScript...
Running cljs tests...

;; ======================================================================
;; Testing with Phantom:

         clojure.lang.ExceptionInfo: java.lang.NullPointerException
data: {:file
       "C:\\Users\\Bill\\AppData\\Local\\Temp\\boot.user2631139475250475313.clj",
       :line 31}

java.util.concurrent.ExecutionException: java.lang.NullPointerException
java.lang.NullPointerException:
clojure.string/replace/invokeStatic string.clj: 101
clojure.string/replace string.clj: 75
crisptrutski.boot-cljs-test/eval836/fn/fn/fn/fn boot_cljs_test.clj: 114
crisptrutski.boot-cljs-test/eval836/fn/fn/fn boot_cljs_test.clj: 98
adzerk.boot-cljs/eval326/fn/fn/fn boot_cljs.clj: 201
adzerk.boot-cljs/eval275/fn/fn/fn boot_cljs.clj: 135
crisptrutski.boot-cljs-test/eval800/fn/fn/fn boot_cljs_test.clj: 79
boot.core/run-tasks core.clj: 794
boot.core/boot/fn core.clj: 804
clojure.core/binding-conveyor-fn/fn core.clj: 1938
...

Test cases don't actually run when using :js-env :chrome (or :firefox)

When running the tests in Chrome or Firefox, the browsers open briefly, but no actual tests get executed. The same tests work just fine in PhantomJS.

Here's a small repo demonstrating the issue: https://github.com/SparkFund/cljs-test-problem, and here's the output I see when I attempt to run the tests in Chrome (latest Chrome, latest MacOS, problem can be reproduced by colleagues):

$ node --version
v6.10.0

$ npm install --global karma karma-chrome-launcher karma-firefox-launcher karma-cljs-test
...

$ boot test-in-chrome
Adding: ([adzerk/boot-cljs "1.7.228-2"] [doo "0.1.7"]) to :dependencies
Compiling ClojureScript...
• cljs_test/generated_test_suite.js
Running cljs tests...

;; ======================================================================
;; Testing with Chrome:

[doo] Created karma conf file: /var/folders/7m/8846n6kn08v2cw2m09hdfs540000gn/T/karma_conf4885380502268738690.js
[doo] Started karma server
25 05 2017 15:10:21.314:WARN [watcher]: All files matched by "/Users/jeff/.boot/cache/tmp/Users/jeff/spark/cljs-test-problem/86v/oz0m8x/cljs_test/generated_test_suite.out/**/*.js" were excluded or matched by prior matchers.
25 05 2017 15:10:21.317:WARN [watcher]: All files matched by "/Users/jeff/.boot/cache/tmp/Users/jeff/spark/cljs-test-problem/86v/oz0m8x/cljs_test/generated_test_suite.out/*.js" were excluded or matched by prior matchers.
[doo] Started karma run
Close Karma run
Shutdown Karma Server

I attempted to inspect either the generated Karma config file or the contents of generated_test_suite.out but it appears those temp files get cleaned up post-haste and are no longer around to look at.

As far as I know I'm using the most recent versions of all my deps. Please let me know if there's more I can do to help troubleshoot this, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.