Feature.
Cypress preprocesses test JavaScript files (using Babel / Browserify). I'd like to use ClojureScript to write tests, which means using a compiler (based on Google Closure) to obtain a final test JS file. However, Google Closure produces JS files that expect this to be set when invoked outside of a function (in the global context). Current Cypress' preprocessing makes this undefined, which breaks code compiled using Google Closure. I don't know of any obvious workaround for this.
To be able to disable test JS files preprocessing, so that I can use ClojureScript / Google Closure compiler.
(ns st.general)
(js/describe "General" (fn []
(js/it "Page title" (fn []
(js/cy.visit "http://localhost:80")
(.should (js/cy.title) "equal" "Page Title")))))
Compile it using ClojureScript compiler to cypress/integration/test.js
Run this test using Cypress. It will hang for a long time, and eventually produce an error that can be tracked down to this being unset.
n/a
This has been briefly discussed on Gitter on June 9th around 1:30 PM UTC.
Any plan on making this possible?
ClojureScript has a mature (6+ years), large, enthusiastic community without a lot of robust available options in the integration-testing space.
cypress could fill that gap!
@kamituel , could you get this to work?
without a lot of robust available options in the integration-testing space
selenium-java :)
@kamituel , could you get this to work?
Nope. For now I settled on using JavaScript basically. However, I'm using Cypress to test a proof-of-concept project we're working on. If we were to start using Cypress for our main web app, ClojureScript support would be necessary.
I discussed it briefly with Cypress' team on Gitter a while back and they weren't opposed to this idea. It's probably just not high on a priority list.
Having that said, Cypress 1.0.0 which is likely just around the corner, will be open source, and then we'll be able to tackle this ourselves.
We're currently working on a generic plugin system for preprocessing spec files that will solve this issue. You'll be able to create a plugin that integrates with the Cypress preprocessing pipeline. It will allow you to disable the default preprocessing, or you could create a ClojureScript preprocessor that transpiles your ClojureScript tests and lets the app know to re-run.
This should be released within the next month or so. If it doesn't make it into 1.0.0, it will be in 1.1.0.
Sounding awesome!
Good luck with the development and release of Cypress!
Cheers - Victor
@chrisbreiding
Thanks, that sounds great.
Fixed in 1.1.0.
With the plugins API now released, you can create a ClojureScript preprocessor or you can essentially disable preprocessing by using the watch preprocessor.
Most helpful comment
Fixed by https://github.com/cypress-io/cypress/pull/888.