我正在尝试为使用lein-cljsbuild
的项目设置用ClojureScript编写的赛普拉斯测试。使用以下配置,我能够将单个测试命名空间编译为单个.js
文件:
:cljsbuild
{:builds [{:id "cypress"
:source-paths ["test/cypress"]
:compiler {:optimizations :simple
:main "specs.login-spec"
:output-to "cypress/integration/login_spec.js"
:output-dir "test-resources/cypress/js/build/"}}]}
以上工作正常并在赛普拉斯正确执行。
现在我想缩放它。以下是我的要求:
specs.login-spec
,specs.shopping-cart-spec
,specs.checkout-spec
等等(我希望有数十个)。lein cljsbuild auto …
仍然有用,并使用增量构建。我如何做到这一点?
最天真的方法是为每个规范指定一个构建计划。但这意味着对于N规格,我需要运行编译N次。那将是非常缓慢的。
突然出现的另一个想法是ClojureScript模块,但以下设置会发出空文件:
{:id "cypress"
:source-paths ["test/cypress"]
:compiler {:optimizations :simple
:output-dir "test-resources/cypress/js/build/"
:modules {:m1 {:output-to "cypress/integration/login_spec.js"
:entries #{"specs.login-spec"}}
:m2 {:output-to "cypress/integration/checkout_spec.js"
:entries #{"specs.checkout-spec"}}}}}
我的规范文件现在非常简单 - 单独地,它们在赛普拉斯编译和运行就好了。例如:
(ns specs.login-spec
(:require [tools.commands]
[tools.interop :refer [cy describe it]]))
(describe "Lorem" (fn []
(describe "Ipsum" (fn []
(it "Blah!" (fn []
(-> cy
(.LogInAndNavigate)
…)))))))