Cypress: Provide an option to disable test files preprocessing.

Created on 9 Jun 2017  路  8Comments  路  Source: cypress-io/cypress

  • Operating System: Mac
  • Cypress Version: 0.19.2
  • Browser/Browser Version: Chrome 58

Are you requesting a feature or reporting a bug?

Feature.

Current behavior:

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.

Expected behavior:

To be able to disable test JS files preprocessing, so that I can use ClojureScript / Google Closure compiler.

How to reproduce the current behavior:

  1. Create a ClojureScript test namespace:
(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")))))
  1. Compile it using ClojureScript compiler to cypress/integration/test.js

  2. 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.

Test code:

n/a

Additional Info (images, notes, stack traces, etc)

This has been briefly discussed on Gitter on June 9th around 1:30 PM UTC.

enhancement

Most helpful comment

All 8 comments

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Francismb picture Francismb  路  3Comments

jennifer-shehane picture jennifer-shehane  路  3Comments

SecondFlight picture SecondFlight  路  3Comments

rbung picture rbung  路  3Comments

carloscheddar picture carloscheddar  路  3Comments