A next-generation code testing stack for JavaScript.

Overview

Intern

Software testing for humans

CI status codecov Average time to resolve an issue Percentage of issues still open FOSSA Status


Intern logo


⚠️ This documentation is for the development version of Intern. For the current release version, go here.

Intern is a complete test system for JavaScript designed to help you write and run consistent, high-quality test cases for your JavaScript libraries and applications. It can be used to test any JavaScript code.

  • Plain JavaScript code, in any module format (or no module format!)
  • Web pages generated by server-side languages (like Java, PHP, or Ruby)
  • Native or hybrid iOS, Android, and Firefox OS applications
  • TypeScript code when running in Node, with no additional config

Intern is minimally prescriptive and enforces only a basic set of best practices designed to ensure your tests stay maintainable over time. Its extensible architecture allows you to write custom test interfaces, executors, and reporters to influence how your tests run & easily integrate with your existing coding environment. Intern also comes with Grunt tasks so it can be quickly added to existing Grunt-based workflows, and is designed to work out-of-the-box with popular continuous integration services like Jenkins and Travis CI.

If you’re into name-dropping, Intern gets used every day by teams at Twitter, Stripe, Mozilla, IBM, Marriott, Philips, Zenput, Alfresco, Esri, HSBC, ING, Intuit, and more. It’s also the testing framework of choice for growing numbers of open-source projects.

💡 Recently updated your browser and your WebDriver tests stopped working? You may need to pin your WebDriver versions.

Quick start

  1. Install from npm

    $ cd /my/project
    $ npm install intern
  2. Create an intern.json file in your project root.

    {
      "suites": "tests/unit/**/*.js"
    }
  3. Verify that your configuration works by running Intern and checking that no errors are output.

    $ ./node_modules/.bin/intern
  4. Start writing tests!

TypeScript setup

Intern installs a global variable that tests may not be aware of if nothing imports the base intern package. To ensure Intern’s types are loaded, add the following to your tsconfig.json:

{
  "compilerOptions": {
    "types": ["intern"]
  }
}

Alternatively, add a triple-slash directive to the top of your suite files:

/// <reference types="intern" />

Compatibility

Intern can run unit tests in most browsers that support ECMAScript 5, including mobile browsers on Android and iOS, and in Node 10+. Note that Internet Explorer versions below 11 are not supported.

Intern’s self-tests run against IE 11, Safari 13, and the most recent few vesions of Firefox, Chrome, and Chromium Edge, as well as the latest LTS and current versions of Node.

Intern can run functional tests using WebDriver-compatible applications and services, including Selenium, Appium, Selendroid. It has built-in support for cloud testing services from BrowserStack, CrossBrowserTesting, SauceLabs, and TestingBot.

More information

Using Intern

Extending Intern

Get help

The best place to ask questions and get answers about Intern is Stack Overflow. Just tag your question with intern. If you have more immediate questions, or just want to chat with other people interested in Intern, join the Gitter room at theintern/intern. See the Help page for more information.

License

Intern is a JS Foundation project offered under the New BSD license.

FOSSA Status

© SitePen, Inc. and its contributors

Intern’s self-tests run on
BrowserStack logo

Comments
  • Add JUnit/Ant compatible XML reporter

    Add JUnit/Ant compatible XML reporter

    Some CI servers, like Jenkins and Bamboo, require JUnit/Ant compatible XML reports be generated for test runs to be reported correctly.

    Reference reporter from BusterJS - http://docs.busterjs.org/en/latest/modules/buster-test/reporters/#xml-reporter

    enhancement 
    opened by phated 30
  • Add a performance benchmarking API

    Add a performance benchmarking API

    intern should include a performance/benchmarking API alongside the functional and unit test functionality.  I will re-submit (eventually) my integration of Benchmark.js to provide this API.

    enhancement effort-high 
    opened by kitsonk 29
  • Using Cucumber.js with Intern

    Using Cucumber.js with Intern

    Hi! Is it possible to use Cucumber.js ( https://github.com/cucumber/cucumber-js ) together with intern? I would like to write my functional tests as features in pure Gherkin Syntax. What I have to do if I want to use Cucumber.js? Regards!

    enhancement effort-high 
    opened by winko 27
  • From Travis CI:

    From Travis CI: "Cannot read property 'numToReport' of undefined"

    When running the tests locally I actually don't have any problem, but when Travis CI runs them, the following error raises:

    ! Cannot read property 'numToReport' of undefined
    TypeError: Cannot read property 'numToReport' of undefined
      at Pretty.suiteEnd  <src/lib/reporters/Pretty.ts:162:41>
      at <src/lib/reporters/Reporter.ts:94:31>
      at <src/lib/executors/Executor.ts:302:30>
      at <node_modules/@dojo/core/async/Task.ts:351:12>
      at handler  <node_modules/@dojo/core/async/ExtensiblePromise.ts:229:14>
      at process._tickCallback  <internal/process/next_tick.js:109:7>
    ! [POST http://localhost:4444/wd/hub/session / {"desiredCapabilities":{"idle-timeout":60,"name":"intern","build":"f735be36d579fa4ff583a7ec9a5f2faa0793c532","browserName":"chrome","chromeOptions":{"args":["headless"]}}}] unknown error: Chrome failed to start: crashed
      (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.14.12-041412-generic x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 60.18 seconds
    Build info: version: '3.5.2', revision: '10229a9020', time: '2017-08-21T17:54:21.164Z'
    System info: host: 'travis-job-inad9300-soil-333461114', ip: '172.17.0.8', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.12-041412-generic', java.version: '1.8.0_151'
    Driver info: driver.version: unknown
    UnknownError: [POST http://localhost:4444/wd/hub/session / {"desiredCapabilities":{"idle-timeout":60,"name":"intern","build":"f735be36d579fa4ff583a7ec9a5f2faa0793c532","browserName":"chrome","chromeOptions":{"args":["headless"]}}}] unknown error: Chrome failed to start: crashed
    

    Here is how my Intern configuration:

    {
        "environments": [{
            "browserName": "chrome",
            "chromeOptions": {"args": ["headless"]}
        }],
        "capabilities": {"fixSessionCapabilities": false},
        "loader": {"script": "dojo2"},
        "suites": ["build/**/*.test.js"],
        "coverage": ["build/!(testing)/**/!(*.test).js"],
        "reporters": [{
            "name": "pretty"
        }, {
            "name": "jsoncoverage",
            "options": {"filename": "coverage.json"}
        }]
    }
    
    opened by inad9300 26
  • Intern 4 pre-beta review

    Intern 4 pre-beta review

    Goal is to make sure Intern 4 feels natural and efficient to use.

    Ways to do this:

    • Install Intern 4 per instructions within Intern readme
    • Review source and APIs
    • Review existing examples and documentation
    • Run tests
    • Port some tests from Dojo 2 to use Intern 4

    As you do this, you should look for things that feel suboptimal from a usability or developer ergonomics perspective, in particular:

    • Authoring tests with ES6 and TypeScript
    • Does the loaderless Intern approach feel straightforward
    • Can we easily test ES6 features without transpilation
    • What ES6+ features should be supported but are not yet within tests (e.g. async/await)
    • What do we need to do to improve the documentations, tutorials, and examples
    • What else?
    opened by dylans 26
  • Intern does not support running functional tests with AndroidDriver

    Intern does not support running functional tests with AndroidDriver

    I thought it was due to the following issue with wd: https://github.com/admc/wd/issues/129 , but this is not the case (applying the workaround for the issue in wd does not resolve the problem in intern).

    It appears that the following line of code in lib/wd.js fails the execution of a test suite:

                    this._wd.execute('return typeof __internCoverage !== "undefined" && JSON.stringify(__internCoverage)', function (error, returnValue) {
                        if (error) {
                            dfd.reject(error);
                            return;
                        }
    
                        // returnValue might be falsy on a page with no coverage data, so don't try to publish coverage
                        // results to prevent things from breaking
                        returnValue && topic.publish('/coverage', self.sessionId, JSON.parse(returnValue));
    
                        wrappedFunction.apply(self, args).then(dfd.resolve.bind(dfd), dfd.reject.bind(dfd));
                    });
    

    The execution of 'return typeof __internCoverage !== "undefined" && JSON.stringify(__internCoverage)' always fails with AdnroidDriver (https://code.google.com/p/selenium/wiki/AndroidDriver).

    As a result, the runner.js execution hang foerever, an no error message is displayed in the console.

    invalid 
    opened by sbrunot 26
  • Firefox 53 / 56 / 57 Issues

    Firefox 53 / 56 / 57 Issues

    My default Firefox update to 53 and now the Intern tests are failing to start properly:

    Suite firefox on any platform FAILED SessionNotCreatedException: [POST http://localhost:4444/wd/hub/session / {"desiredCapabilities":{"firefox_profile":"UEsDBBQACAAIAAqylEoAAAAAAAAAAAAAAAAHAAAAdXNlci5qc61XXW/bNhR9368w/DC0wEzLSYNtCYqhS9shQIsA84LtjaClK4s1RWokZdn79TvURyLbsh0DRfKgKPfyfvDcc49KR5YXltI3Y1EUrCwS4YmJ0pvxT6NUKEdv734oB41Ii4WiZNhuYU0FL5aYSisjEpYLLZZ44TJT/Z2RnnthvdTL0+6fnr58YGZN1sqEYOptuZdQF6i2vGYijqnwdVbHbZXUK2YK0pw2nqwWCkdf7Rbanftiq6mqpEZBx41NmsI+JDrQuu5EJ1Kqn1E9e1UTHQkbZ+3lDB8eCtFOGu3YQpl4paTzrz3c1X7eWGKWXJkTT63JeWyFy4ajPZeSkVIszihefaRUlMr/3tz7aTcvFo5VwupHfa+MO9OvnvUj7uz00S7AqixYAbDBMhq+1J0ryIVCLnS6W925mckpnM0rUjGeeWkDeMZiYUp/u1BCr8a7MRNae2OUYwCxsTFuyKh+sEOYJiZniXRhuniN0qS0wAoPczRcfe/2w+h+bJznMbwdPGZ7beiZK7Nc7uLwMJ+eecsPJ1F7aK6Nl+n2CXwwnL4mXxm7ajli0k7RBD33Zch/YJg6l8z7An6bCRqrKfZhAiYF2QmCgTYGit/xLDLpsu0kEFwhnJso0ksfQH91c7N7jV1SYEnHhFKm4ostTxrUw+GwbQWGqPCOAb88N4lQZxBGMa7Zb1kqFeGJGStxNbwwSsZbRLjeTcjt2ztvZez5vttA855dwwxy0uDAgK/69ZFhPOlSkzo3Or7MuSKxQl2vTzA4XBZLkVhfVtqux2XRXLnIpedSv76Ta0lYKkuey82xVbrb+h2Hs+nJpTYarJ5TviA7r/88MlGBpFbSs3Y+un3dEtEgwjsXTwoRvN2eRviheTMideF76/fQ1tI3zPeRzf5NrIWLrSw89npNAnVrHvR9w7eD6XdbLPBts9lZUuZFr4jDoa5okVgJZuGN0uClhpFDXjwm60NvTzk1xMm18DiD0xqzd84FtBRW8ksciRc1sx0GCpWADHnTCm5Lzb3Mw1Re762AZ1DVwONgT+gH32gHlFan176E9+CI2rWMyTG31THDGmFgRtIJJF4gsPDmUc9LyDE3XCEEnfY1323QSoP6wKulh8yxEiHHgdlvp9PZ1c8sws/s9tcoiqbr2d56HToGeDdQsSnWLfGTZ15H19H0xe63sDVQ1ftQ1I91/Rv/Pt2A593Km4JfEt5h2qQ+Wk4durH57mEhgI518TlsWXyfsI580PHuTMTWau/22n63KPJmhQ+DenE//fnQA8GeV+9LxQFr2g9DNKdECqaxAZYC6pZBFuQYHkiETl4FOXU4RWGyYbaQKsCzYYlK+iyGSgyhDj2WpMliwQcdAXGIQep9s4y/mv+kUmJ6w6LRm68iltobl92NHjBzaoQXo8f56B+oNDaL7kZ2ffsOgH87+gOq2kyvolmE39nos8RXmtlMwz9Hnzcf/iKwjp3OWLTXnZ7+qpX5PWQI+KYt5x3GabhdZ/x+OebX0Wit0/ujN2nYbrBjmwJb0kNHsTAC0Hn48sCe+rdElUdE7otLlUl0LnzhnPbYRVf4ym2BdvlRp5uj5TLzKoi0AaakDYAHFq4JrmbWT89vznuckdovR7uyKIxtFuSZLLDbZQr4dCO7B6BOIdcqd9JLv5ft/1BLBwi7/Tsi2gQAADgQAABQSwECLQMUAAgACAAKspRKu/07ItoEAAA4EAAABwAAAAAAAAAAACAApIEAAAAAdXNlci5qc1BLBQYAAAAAAQABADUAAAAPBQAAAAA=","name":"tests/intern_functional","idle-timeout":60,"browserName":"firefox","marionette":true}}] Unable to create new remote session. desired capabilities = Capabilities [{marionette=true, name=tests/intern_functional, browserName=firefox, idle-timeout=60, moz:firefoxOptions=org.openqa.selenium.firefox.FirefoxOptions@392f6c41, firefox_profile=org.openqa.selenium.firefox.FirefoxProfile@7c2df500}], required capabilities = Capabilities [{}] Build info: version: '3.1.0', revision: '86a5d70', time: '2017-02-16 07:57:44 -0800' System info: host: 'Vlads-MBP', ip: '192.168.1.144', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.4', java.version: '1.8.0_111' Driver info: driver.version: FirefoxDriver at Server.createSession <node_modules/intern/node_modules/leadfoot/Server.js:355:15> at <node_modules/intern/lib/executors/Runner.js:198:23> at retry <node_modules/intern/lib/util.js:818:13> at <node_modules/intern/node_modules/dojo/Promise.ts:393:15> at runCallbacks <node_modules/intern/node_modules/dojo/Promise.ts:11:11> at <node_modules/intern/node_modules/dojo/Promise.ts:317:4> at run <node_modules/intern/node_modules/dojo/Promise.ts:237:7> at <node_modules/intern/node_modules/dojo/nextTick.ts:44:3> at nextTickCallbackWith0Args node.js:489:9 at process._tickCallback node.js:418:13 TOTAL: tested 0 platforms, 0/0 tests failed; fatal error occurred

    Does anyone have this working? I'm trying to find working tunnelOptions. This worked in FF50 to FF52

        tunnel: 'SeleniumTunnel',
        tunnelOptions: {
          // this tells SeleniumTunnel to download geckodriver
          drivers: [{
            name: 'firefox',
            version: '0.11.1'
          }],
          // version of Selenium
          version: '3.1.0'
        }
    
    opened by vladikoff 19
  • beforeEach / afterEach only execute at the current describe/Suite level, not child levels

    beforeEach / afterEach only execute at the current describe/Suite level, not child levels

    It's quite difficult to arrange setup + teardown behaviour with well-nested describe contexts in Intern: Intern only runs the beforeEach/afterEach for tests at the same describe/Suite level rather than for tests in descendant levels as well.

    Other frameworks that offer BDD-interfaces with functions 'beforeEach' / 'afterEach' (e.g. Jasmine, RSpec) run the beforeEach functions before every test in the same level and all descendant levels.

    With beforeEach not executing code before each and every test, I'm ending up having to construct a hierarchy of nested setup + teardown functions, which is very error-prone. I thought at first this was just my mistake, but having seen that at least Jasmine and RSpec drive beforeEach as I'd expect, this feels more like an issue in Intern? (I can't find an Intern test that is asserting its current nesting behaviour so I'm not sure it's intended.)

    Here's some test code to illustrate in slightly more concrete terms:

    define(["intern!bdd", "intern/chai!expect"], function(bdd, expect) {
        bdd.describe("Top-level describe", function() {
            bdd.before(function() {
                console.log("Top-level before");
            });
    
            bdd.beforeEach(function() {
                console.log("Top-level beforeEach");
            });
    
            bdd.after(function() {
                console.log("Top-level after");
            });
    
            bdd.afterEach(function() {
                console.log("Top-level afterEach");
            });
    
            bdd.it("Top-level it", function() {
                console.log("Top-level it #1");
            });
    
            bdd.it("Top-level it", function() {
                console.log("Top-level it #2");
            });
    
            bdd.describe("Nested describe", function() {
                bdd.before(function() {
                    console.log("Nested-level before");
                });
    
                bdd.beforeEach(function() {
                    console.log("Nested-level beforeEach");
                });
    
                bdd.after(function() {
                    console.log("Nested-level after");
                });
    
                bdd.afterEach(function() {
                    console.log("Nested-level afterEach");
                });
    
                bdd.it("Nested-level it", function() {
                    console.log("Nested-level it #1");
                });
    
                bdd.it("Nested-level it", function() {
                    console.log("Nested-level it #2");
                });
            });
        });
    });
    

    I would expect the following output:

    Top-level before
    Top-level beforeEach
    Top-level it #1
    PASS: Top-level it (1ms)
    Top-level afterEach
    Top-level beforeEach
    Top-level it #2
    PASS: Top-level it (1ms)
    Top-level afterEach
    Nested-level before
    Top-level beforeEach
    Nested-level beforeEach
    Nested-level it
    PASS: Nested-level it
    Nested-level afterEach
    Top-level afterEach
    Top-level beforeEach
    Nested-level beforeEach
    Nested-level it
    PASS: Nested-level it
    Nested-level afterEach
    Top-level afterEach
    Nested-level after
    Top-level after
    

    (Not quite sure about some of the detail, but I'm definitely expecting to see the top-level beforeEach just before each nested-level beforeEach.)

    however Intern 1.1 gives me:

    Top-level before
    Top-level beforeEach
    Top-level it #1
    PASS: Top-level it (1ms)
    Top-level afterEach
    Top-level beforeEach
    Top-level it #2
    PASS: Top-level it (1ms)
    Top-level afterEach
    Top-level beforeEach
    Nested-level before
    Nested-level beforeEach
    Nested-level it
    PASS: Nested-level it
    Nested-level afterEach
    Nested-level beforeEach
    Nested-level it
    PASS: Nested-level it
    Nested-level afterEach
    Nested-level after
    Top-level afterEach
    Top-level after
    

    There's a good sample of RSpec behaviour described here: http://www.wulftone.com/2012/01/22/rspec-gotchas-before-after-all-and-each/

    And another page which describes the usefulness of per-test beforeEach functions in Jasmine here: http://thatextramile.be/blog/2011/08/take-advantage-of-your-bdd-framework/

    Thanks!

    bug enhancement 
    opened by RoystonS 18
  • Add benchmarking API based on Benchmark.js v1.0.0

    Add benchmarking API based on Benchmark.js v1.0.0

    Provides a benchmarking API for the Intern, based on Benchmark.js. This includes self test unit tests. Let me know if you want to see any changes to the code.

    Refs #13.

    enhancement invalid 
    opened by kitsonk 18
  • Serialize Executor events

    Serialize Executor events

    Individual calls to emit(<event>) currently start a new asynchronous promise chain. In the intern-cucumber plugin, this causes overlapping handling of the events, since the suiteEnd handling is not yet finished before the new suiteStart event is triggered. This problem is easily fixed by chaining this suiteStart event at the end of the suiteEnd chain.

    opened by rhpijnacker 17
  • ESM - Remove loader dependency from Intern

    ESM - Remove loader dependency from Intern

    • Testing engine framework hierarchy
    • Determine what stays and what gets abstracted out
    • Separate suites, tests, import object, import TDD, import BDD
    • Work off of TS conversion branch
    enhancement effort-medium 
    opened by morrinene 17
  • Bump express from 4.17.1 to 4.17.3

    Bump express from 4.17.1 to 4.17.3

    Bumps express from 4.17.1 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs from 6.7.0 to 6.9.7

    Bump qs from 6.7.0 to 6.9.7

    Bumps qs from 6.7.0 to 6.9.7.

    Changelog

    Sourced from qs's changelog.

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"
    • [actions] backport actions from main
    • [Dev Deps] backport updates from main

    6.9.6

    • [Fix] restore dist dir; mistakenly removed in d4f6c32

    6.9.5

    • [Fix] stringify: do not encode parens for RFC1738
    • [Fix] stringify: fix arrayFormat comma with empty array/objects (#350)
    • [Refactor] format: remove util.assign call
    • [meta] add "Allow Edits" workflow; update rebase workflow
    • [actions] switch Automatic Rebase workflow to pull_request_target event
    • [Tests] stringify: add tests for #378
    • [Tests] migrate tests to Github Actions
    • [Tests] run nyc on all tests; use tape runner
    • [Dev Deps] update eslint, @ljharb/eslint-config, browserify, mkdirp, object-inspect, tape; add aud

    6.9.4

    • [Fix] stringify: when arrayFormat is comma, respect serializeDate (#364)
    • [Refactor] stringify: reduce branching (part of #350)
    • [Refactor] move maybeMap to utils
    • [Dev Deps] update browserify, tape

    6.9.3

    • [Fix] proper comma parsing of URL-encoded commas (#361)
    • [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336)

    6.9.2

    • [Fix] parse: Fix parsing array from object with comma true (#359)
    • [Fix] parse: throw a TypeError instead of an Error for bad charset (#349)
    • [meta] ignore eclint transitive audit warning
    • [meta] fix indentation in package.json
    • [meta] add tidelift marketing copy
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, has-symbols, tape, mkdirp, iconv-lite
    • [actions] add automatic rebasing / merge commit blocking

    6.9.1

    • [Fix] parse: with comma true, handle field that holds an array of arrays (#335)
    • [Fix] parse: with comma true, do not split non-string values (#334)
    • [meta] add funding field
    • [Dev Deps] update eslint, @ljharb/eslint-config

    ... (truncated)

    Commits
    • 4cd0032 v6.9.7
    • e799ba5 [Fix] parse: ignore __proto__ keys (#428)
    • 02ca358 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 4a17709 [Fix] stringify: avoid encoding arrayformat comma when `encodeValuesOnly = ...
    • c0e13e9 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 4113a5f [Tests] clean up stringify tests slightly
    • 749a584 [Docs] add note and links for coercing primitive values (#408)
    • cce2082 [meta] fix README.md (#399)
    • c44f0c5 Revert "[meta] ignore eclint transitive audit warning"
    • e6cfd8b [actions] backport actions from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • docs: Fix a few typos

    docs: Fix a few typos

    There are small typos in:

    • docs/api.md
    • docs/architecture.md
    • docs/configuration.md
    • docs/how_to.md

    Fixes:

    • Should read without rather than wihtout.
    • Should read something rather than somthing.
    • Should read scripts rather than scriptss.
    • Should read points rather than poitns.
    • Should read information rather than informatioon.
    • Should read functionality rather than funtionality.
    • Should read dependency rather than dependecy.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 0
  • Bump loader-utils from 1.4.0 to 1.4.2

    Bump loader-utils from 1.4.0 to 1.4.2

    Bumps loader-utils from 1.4.0 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump minimatch from 3.0.4 to 3.0.5

    Bump minimatch from 3.0.4 to 3.0.5

    Bumps minimatch from 3.0.4 to 3.0.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(4.10.1)
  • 4.10.1(Nov 29, 2021)

    This release fixes an issue where objects containing circular references would cause errors when Intern tried to serialize them. (#1188)

    Thanks @rhpijnacker!

    Source code(tar.gz)
    Source code(zip)
  • 4.10.0(Jul 12, 2021)

  • 4.9.1(Jun 2, 2021)

  • 4.9.0(Nov 6, 2020)

    This release adds a new socketTimeout config parameter that can be used to set the timeout used for websocket connections between Intern and a remote host. (#1176)

    Source code(tar.gz)
    Source code(zip)
  • 4.8.8(Nov 6, 2020)

  • 4.8.7(Jun 8, 2020)

    Overview

    This release allows the path to the loader to be set for the dojo, dojo2, and systemjs loader scripts (#1161). The options object for any of those loaders may now contain an internLoaderPath property that points to the loader script. This property is consumed by Intern and will not be passed on to the loader itself.

    {
      "loader": {
        "script": "dojo",
        "options": {
          "internLoaderPath": "./dojo/dojo.js"
        }
      }
    }
    
    Source code(tar.gz)
    Source code(zip)
  • 4.8.6(May 28, 2020)

  • 4.8.5(May 28, 2020)

    Overview

    This release updates the Dig Dug dependency to 2.5.0, which automatically updates its WebDriver version database when starting a test run. Basically, you won't need to update Intern every time a new chromedriver comes out.

    Source code(tar.gz)
    Source code(zip)
  • 4.8.4(Apr 22, 2020)

    Overview

    This release fixes an issue when using mock timers in unit tests (#1125). It also updates the default webdriver versions for Chrome and Chromium Edge via a Dig Dug update.

    Source code(tar.gz)
    Source code(zip)
  • 4.8.3(Apr 15, 2020)

    Overview

    This release fixes an issue where remote browsers would close the websocket channel if no messages had been sent or received for a long time (~60 seconds). (#1143)

    Source code(tar.gz)
    Source code(zip)
  • 4.8.2(Apr 7, 2020)

  • 4.8.1(Apr 1, 2020)

    Overview

    This release fixes an issue where event listeners were not being notified immediately when an event was emitted with Executor#emit. (#1124)

    Source code(tar.gz)
    Source code(zip)
  • 4.3.6(Apr 1, 2020)

  • 4.8.0(Jan 17, 2020)

    Overview

    This release includes a couple of bug fixes, some typing improvements, and the ability to disable DOM writes in remote browser sessions.

    Thanks to @aciccarello, @rhpijnacker, @maier49, and @jonnycornwell for their contributions!

    New features

    • Option to disable Intern's "dom" reporter in remote test sessions. This prevents Intern from interfering with unit tests that expect to have full control of the DOM. (#909, #1010)

    Bug fixes

    • Fix the tsconfig implementation in the config schema. Initially it was at the top level in the schema, but it must be a child of the node property.
    • Tests that are children of a skipped suite are now marked as skipped (#605, #1009)
    • Listener functions are now typed to return PromiseLikes, which allows them to handle promise-like return values such as Leadfoot Commands (#949, #1012)
    • The lifecycleMethod Suite error property is now included in serialized errors (#1006)
    • suiteError is now included in serialized Tests (#1008)
    • ts-node is will no longer be registered by Intern if Intern determines it has already been loaded (#1000, #1007)

    General improvements

    • The "html" reporter now disables any stylesheets in the DOM before rendering itself. (#1026)
    Source code(tar.gz)
    Source code(zip)
  • 4.7.1(Dec 13, 2019)

    Overview

    This release adds the new lifecycleMethod Suite property to serialized suites (#1006). Without this property, the updated JUnit reporter couldn't properly generate reports for remote suites. Thanks @jonnycornwell!

    Source code(tar.gz)
    Source code(zip)
  • 4.7.0(Dec 4, 2019)

    Overview

    This release features an updated JUnit reporter that now indicates suite errors, and also updates the Runner reporter to tag suite error messages with "ERROR" rather than "FAILED" (#955).

    Source code(tar.gz)
    Source code(zip)
  • 4.6.0(Nov 27, 2019)

    Overview

    This release includes bugfixes and significantly improved TS support. Thanks to @maier49 for his work on this release!

    New features

    • Support for Edge Preview, just in time for the full Edge release (#993)
    • Built in support for TS app code and tests — no pre-compilation required (#995)

    Bug fixes

    • Fix handling of query args with empty values (#991)
    • Fix handling of environments with only browserVersion (#994)
    Source code(tar.gz)
    Source code(zip)
  • 4.5.0(Jul 29, 2019)

    Overview

    This release adds a few new features:

    Thanks to @ascorbic for contributing!

    • Intern will now automatically download required drivers for common browsers when using Selenium tunnel. No more tunnelOptions: { drivers: [ 'firefox' ] }! (#833)
    • Intern now includes a JSON schema (#848)
    • The requested remote environment is now accessible as remote.requestedEnvironment in tests (#978)

    Additional changes

    In addition, all dependencies were updated to current versions.

    Intern is once again compatible with TypeScript projects using older versions of TS (< 3.0). Internally Intern is compiled with TS 3.5.

    Source code(tar.gz)
    Source code(zip)
  • 4.4.3(Jun 5, 2019)

    Overview

    This release fixes bugs with path resolution and reporter output, and ensure types are compatible with the version of TS used by Intern.

    • Remove unnecessary types dependencies and ensure remaining types are TS 3.1 compatible (#977)
    • Improve internPath resolution and update HTML testing documentation (#988)
    • Add a mkdirp implementation for the Junit reporter (#984)
    Source code(tar.gz)
    Source code(zip)
  • 4.3.5(Jun 5, 2019)

  • 4.4.2(Mar 5, 2019)

    Overview

    This release fixes some issues with the HTML reporter and improves typing for the leaveRemoteOpen config option. Thanks to @edhager for fixing some bugs!

    HTML reporter updates

    • Fix a row-expansion bug that could hide a subsequent row (#966)
    • Make URLs in error output clickable (#969)
    • Show error text in a <pre> and switch to SVG icons to fix some rendering issues (#974)

    Other fixes

    • Support the fail value for leaveRemoteOpen (#915)
    Source code(tar.gz)
    Source code(zip)
  • 4.4.1(Jan 21, 2019)

  • 4.4.0(Jan 14, 2019)

    Overview

    This release adds a couple new features and changes (fixes, really) how lifecycle methods interact with grep. Thanks to @jonnycornwell for his contributions!

    New features

    • Enable dojo-timeout-api for the dojo loader (#925)
    • Add an option to the Runner reporter to hide download progress (#956)
    • Add the ability to hide skipped tests in the Html reporter (#957)
    • Don't run suite lifecycle methods when all suite tests and sub-suites are skipped (#961)

    Other updates

    • Update the leadfoot and digdug dependencies to improve WebDriver compatibility
    Source code(tar.gz)
    Source code(zip)
  • 4.3.4(Jan 14, 2019)

    Overview

    This is a bug fix release. Thanks to @jonnycornwell for helping out!

    Bug fixes

    • Don't use + when setting default browser reporters (0715e6b)
    • Fix query parsing to handle URLSsearchParams format (#962)
    • Ignore non-numeric browser version for 'latest' (#963)
    Source code(tar.gz)
    Source code(zip)
  • 4.3.3(Oct 24, 2018)

    Overview

    This release switches back to the core-js Promise polyfill, but changes how polyfills are installed to prevent native features from being overridden unintentionally. (#951)

    This release also updates @theintern dependencies and removes some unused code in the Node executor.

    Source code(tar.gz)
    Source code(zip)
  • 4.3.2(Oct 24, 2018)

    Overview

    This release replaces the core-js Promise polyfill with promise-polyfill . The core-js polyfill was overriding native Promises when it didn't need to, which caused issues with at least @dojo/framework. (#951)

    This release also updates the Leadfoot and Dig Dug dependencies.

    Source code(tar.gz)
    Source code(zip)
  • 4.3.1(Oct 24, 2018)

    Overview

    This release updates the @theintern dependencies to fix an issue where data from network requests wasn't being handled correctly. (#947)

    Source code(tar.gz)
    Source code(zip)
  • 4.3.0(Sep 13, 2018)

    Overview

    This is The Great de-Dojoification™️ release. There are no new features, but there some typing updates and a couple of bug fixes.

    The most significant update is the removal of @dojo packages as dependencies. This was done because Dojo is one of the main consumers of Intern, and the fact that both @dojo packages and Intern depended on other @dojo packages caused frequent (mostly typing) conflicts. Intern packages now depend on @theintern/common, which extracts the few Dojo modules used by Intern.

    This release also includes two bug fixes:

    • The JUnit reporter can now properly handle serialized suites (#869, #946 -- thanks @jonnycornwell!)
    • The {pwd} replacement performed on paths in config properties now works properly on Windows (#943)
    Source code(tar.gz)
    Source code(zip)
  • 4.2.4(Sep 13, 2018)

    Overview

    This release updates the istanbul dependencies to fix a version compatibility issue, and also updates some dependencies with critical security issues. (#944)

    Source code(tar.gz)
    Source code(zip)
  • 4.2.3(Sep 13, 2018)

Owner
Intern: next-gen JavaScript testing
High-quality JavaScript testing software.
Intern: next-gen JavaScript testing
CasperJS is no longer actively maintained. Navigation scripting and testing utility for PhantomJS and SlimerJS

CasperJS Important note: the master branch hosts the development version of CasperJS, which is now pretty stable and should be the right version to us

CasperJS 7.3k Dec 25, 2022
A simple and stable cross-browser testing tool. 简单稳定的跨浏览器测试工具。

totoro A simple and stable cross-browser testing tool. Latest stable version: v2.0 Change Log 中文版使用文档 0. Features Run in real browsers Support all tes

totoro 568 Dec 21, 2022
End-to-end testing framework written in Node.js and using the Webdriver API

Nightwatch.js Homepage | Getting Started | Developer Guide | API Reference | About Automated end-to-end testing framework powered by Node.js and using

Nightwatch.js 11.3k Jan 7, 2023
A node.js library for testing modern web applications

Taiko Docs | API reference A Node.js library for testing modern web applications What’s Taiko? Taiko is a free and open source browser automation tool

Gauge 3.2k Dec 30, 2022
Next-gen browser and mobile automation test framework for Node.js

Next-gen browser and mobile automation test framework for Node.js. Homepage | Developer Guide | API Reference | Contribute | Changelog | Roadmap Webdr

WebdriverIO 7.9k Jan 3, 2023
Spectacular Test Runner for JavaScript

Karma A simple tool that allows you to execute JavaScript code in multiple real browsers. The main purpose of Karma is to make your test-driven develo

Karma 11.8k Dec 27, 2022
A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Prisma ORM. Deploys to Fly.io

Live Demo · Twitter A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Pris

Remix Stacks 18 Oct 31, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
This is a full-stack exercise tracker web application built using the MERN (MongoDB, ExpressJS, ReactJS, NodeJS) stack. You can easily track your exercises with this Full-Stack Web Application.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

WMouton 2 Dec 25, 2021
Javascript-testing-practical-approach-2021-course-v3 - Javascript Testing, a Practical Approach (v3)

Javascript Testing, a Practical Approach Description This is the reference repository with all the contents and the examples of the "Javascript Testin

Stefano Magni 2 Nov 14, 2022
A new generation GUI automation framework for Web and Desktop Application Testing and Automation.

Clicknium-docs Clicknium is a new generation GUI automation framework for all types of applications. It provides easy and smooth developer experience

null 109 Dec 19, 2022
Code Playground is a online application for testing and showcasing user-created and collaborational HTML, CSS and JavaScript code snippets

Code Playground About Code Playground is a online application for testing and showcasing user-created and collaborational HTML, CSS and JavaScript cod

Arshansh Agarwal 5 Dec 17, 2022
🐐 Simple and complete React DOM testing utilities that encourage good testing practices.

React Testing Library Simple and complete React DOM testing utilities that encourage good testing practices. Read The Docs | Edit the docs Table of Co

Testing Library 17.3k Jan 4, 2023
🐐 Simple and complete React DOM testing utilities that encourage good testing practices.

React Testing Library Simple and complete React DOM testing utilities that encourage good testing practices. Read The Docs | Edit the docs Table of Co

Testing Library 17.3k Jan 4, 2023
Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.

?? Playwright Documentation | API reference Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit w

Microsoft 46.3k Jan 9, 2023
AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool.

AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool. Test restful API by record, replay and stub request/response. Differential

ArexTest 15 Nov 1, 2022
The next generation Javascript WYSIWYG HTML Editor.

Froala Editor V3 Froala WYSIWYG HTML Editor is one of the most powerful JavaScript rich text editors ever. Slim - only add the plugins that you need (

Froala 5k Jan 1, 2023
🐠 Babel is a compiler for writing next generation JavaScript.

The compiler for writing next generation JavaScript. Supporting Babel Babel (pronounced "babble") is a community-driven project used by many companies

Babel 41.8k Jan 9, 2023