mzedeler
mzedeler

Reputation: 4369

Intern functional tests: module request is missing

I've tried setting up a minimal test demonstration, but I'm stuck when I try to run tests.

What I get is:

Listening on 0.0.0.0:9000
Starting tunnel...
Error: Failed to load module request from /tmp/local-selenium-intern/request.js (parent: tests/functional)
  at <node_modules/intern/node_modules/dojo/dojo.js:757:12>
  at <fs.js:207:20>
  at Object.oncomplete  <fs.js:107:15>

What I expect is that internal modules (such as request doesn't require any explicit configuration for them to load correctly).

I have this test configuration:

define({
    proxyPort: 9000,
    proxyUrl: 'http://localhost:9000/',
    capabilities: {
        'selenium-version': '2.35.0',
        'idle-timeout': 30
    },
    environments: [
        { browserName: 'firefox' },
        { browserName: 'chrome' }
    ],
    maxConcurrency: 3,
    useSauceConnect: false,
    webdriver: {
        host: 'localhost',
        port: 4444
    },
    loader: {
      // TODO: What to add here?
    },
    suites: [ 'tests/unit' ],
    functionalSuites: [ 'tests/functional' ],
    excludeInstrumentation: /^(?:tests|node_modules)\//
});

tests/functional.js contains this:

'use strict';

define([
    'intern!object',
    'intern/chai!assert',
    'request'
], function (registerSuite, assert, request) {
    registerSuite({
        name: 'async demo',

        'async test': function () {
            var dfd = this.async(1000);

            request('http://example.com/test.json').then(dfd.callback(function (data) {
                assert.strictEqual(data, 'Hello world!');
            }), dfd.reject.bind(dfd));
        }
    });
});

(An example from interns own documentation.)

The example provided is very basic and can be tested by downloading the code below followed `npm install && npm start``:

https://github.com/mzedeler/local-selenium-intern/tree/request-broken

Upvotes: 0

Views: 596

Answers (1)

jason0x43
jason0x43

Reputation: 3363

From looking at your repository, I see you fixed the issue by using the request module from Intern's copy of Dojo. While this works, it's better to use your own copy of Dojo for your tests. Intern (the non-geezer version, at least) doesn't use standard Dojo, and makes no guarantees about the functionality therein. The current release of Dojo (1.10.0) is available through the npm repository, so it's easy to include as a project dependency.

Also, the test config in your project is a bit out of date. Specifically, the webdriver and useSauceConnect options have been replaced by tunnel and tunnelOptions. More information about the changes in Intern 2 is available in the 2.0.0 release notes.

Upvotes: 0

Related Questions