Search code examples
javascriptjquerynode.jstravis-ciqunit

Travis CI QUnit build fail with ReferenceError on jQuery


My node QUnit Travis CI build (see .travis.yml) fail miserably with this error :

Running "qunit:files" (qunit) task
Testing test/unit/iframeTracker-jQuery1.html FF
   global failure
   Message: ReferenceError: Can't find variable: jQuery
   file:///home/travis/build/vincepare/iframeTracker-jquery/src/jquery.iframetracker.js:184

QUnit test code :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.3.3.css">
</head>
<body>
    <div id="qunit"></div>
    <div id="qunit-fixture">
        <!-- ... (some iframe) -->
    </div>
    <script src="https://code.jquery.com/qunit/qunit-2.3.3.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="../../src/jquery.iframetracker.js"></script>
    <script src="iframeTracker_test.js"></script>
</body>
</html>

I don't understand why, because it works fine in the browser and within node locally (tested on Windows and Linux/Docker) :

docker run -ti --rm -v "$(pwd):/app" -w /app node:9 npm install
docker run -ti --rm -v "$(pwd):/app" -w /app node:9 npm test

I suspected CDNs (code.jquery.com and ajax.googleapis.com) to be responsible for this issue (I don't know if travis build environments have access to the internet) but I found some jQuery/QUnit builds (with similar setup and using CDN) that works : https://travis-ci.org/fengyuanchen/cropper/builds/314789410

Can anyone explain me what's wrong with my build ?


Solution

  • Switching from ajax.googleapis.com to code.jquery.com CDN solved the Travis CI build.

    I didn't found any official information about this in Travis CI documentation and issue tracker, but it seems that Travis build environments has some network restriction. It would be nice to have some quote on that from Travis staff, for example a list of allowed or denied CDNs.