{"id":13433018,"url":"https://github.com/theintern/intern","last_synced_at":"2025-05-13T15:12:05.993Z","repository":{"id":7675192,"uuid":"9037631","full_name":"theintern/intern","owner":"theintern","description":"A next-generation code testing stack for JavaScript.","archived":false,"fork":false,"pushed_at":"2023-03-14T16:33:27.000Z","size":23363,"stargazers_count":4357,"open_issues_count":140,"forks_count":307,"subscribers_count":112,"default_branch":"master","last_synced_at":"2025-05-08T10:06:05.095Z","etag":null,"topics":["coverage","intern","javascript","testing","typescript","webdriver"],"latest_commit_sha":null,"homepage":"https://theintern.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theintern.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null}},"created_at":"2013-03-26T18:45:29.000Z","updated_at":"2025-05-07T09:11:42.000Z","dependencies_parsed_at":"2023-02-15T04:16:29.634Z","dependency_job_id":"14f229be-0462-48b3-a682-ede9dbdf4306","html_url":"https://github.com/theintern/intern","commit_stats":{"total_commits":1393,"total_committers":71,"mean_commits":"19.619718309859156","dds":0.460875807609476,"last_synced_commit":"f28dd484b1fb78cf27ae0d2072e331982e5b984e"},"previous_names":[],"tags_count":150,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theintern%2Fintern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theintern%2Fintern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theintern%2Fintern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theintern%2Fintern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theintern","download_url":"https://codeload.github.com/theintern/intern/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253273341,"owners_count":21881967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coverage","intern","javascript","testing","typescript","webdriver"],"created_at":"2024-07-31T02:01:19.879Z","updated_at":"2025-05-13T15:12:00.973Z","avatar_url":"https://github.com/theintern.png","language":"TypeScript","readme":"# Intern\n\n\u003c!-- start-github-only --\u003e\n\nSoftware testing for humans\n\n\u003c!--[![Build Status](https://travis-ci.org/theintern/intern.svg?branch=master)](https://travis-ci.org/theintern/intern)--\u003e\n\n[![CI status](https://travis-ci.org/theintern/intern.svg?branch=4.x)](https://travis-ci.org/theintern/intern)\n[![codecov](https://codecov.io/gh/theintern/intern/branch/master/graph/badge.svg)](https://codecov.io/gh/theintern/intern)\n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/theintern/intern.svg)](http://isitmaintained.com/project/theintern/intern 'Average time to resolve an issue')\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/theintern/intern.svg)](http://isitmaintained.com/project/theintern/intern 'Percentage of issues still open')\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Ftheintern%2Fintern.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Ftheintern%2Fintern?ref=badge_shield)\n\n\u003cbr\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"https://cdn.rawgit.com/theintern/intern/master/docs/logo.svg\" alt=\"Intern logo\" height=\"128\"\u003e\u003c/p\u003e\u003cbr\u003e\n\n\u003c!-- end-github-only --\u003e\n\nIntern is a complete test system for JavaScript designed to help you write and\nrun consistent, high-quality test cases for your JavaScript libraries and\napplications. It can be used to test _any_ JavaScript code.\n\n- Plain JavaScript code, in any module format (or no module format!)\n- Web pages generated by server-side languages (like Java, PHP, or Ruby)\n- Native or hybrid iOS, Android, and Firefox OS applications\n- TypeScript code when running in Node, with no additional config\n\nIntern is minimally prescriptive and enforces only a basic set of best practices\ndesigned to ensure your tests stay maintainable over time. Its extensible\narchitecture allows you to write custom test interfaces, executors, and\nreporters to influence how your tests run \u0026 easily integrate with your existing\ncoding environment. Intern also comes with Grunt tasks so it can be quickly\nadded to existing Grunt-based workflows, and is designed to work out-of-the-box\nwith popular continuous integration services like Jenkins and Travis CI.\n\nIf you’re into name-dropping, Intern gets used every day by teams at Twitter,\nStripe, Mozilla, IBM, Marriott, Philips, Zenput, Alfresco, Esri, HSBC, ING,\nIntuit, and more. It’s also the testing framework of choice for\n[growing numbers of open-source projects](https://github.com/search?p=2\u0026q=tests+filename%3Aintern.js\u0026ref=searchresults\u0026type=Code\u0026utf8=%E2%9C%93).\n\n\u003c!-- prettier-ignore-start --\u003e\n\u003e 💡 If you’re an Intern user who’s new to Intern 4, see the\n    [Changes from Intern 3](docs/changes_from_3.md) document for a summary of the\n    major differences. For Intern 3 documentation, please see\n    [the Intern 3 README](https://github.com/theintern/intern/tree/3.4#intern).\n\n\u003e 💡 Recently updated your browser and your WebDriver tests stopped working? You\n    may need to [pin your WebDriver versions](./docs/running.md#selenium).\n\u003c!-- prettier-ignore-end --\u003e\n\n## Quick start\n\n1.  Install from npm\n\n    ```sh\n    $ cd /my/project\n    $ npm install intern\n    ```\n\n2.  Create an `intern.json` file in your project root.\n\n    ```js\n    {\n      \"suites\": \"tests/unit/**/*.js\"\n    }\n    ```\n\n3.  Verify that your configuration works by running Intern and checking that no\n    errors are output.\n\n    ```sh\n    $ ./node_modules/.bin/intern\n    ```\n\n4.  Start [writing tests](docs/writing_tests.md)!\n\n## TypeScript setup\n\nIntern installs a global variable that tests may not be aware of if nothing\nimports the base `intern` package. To ensure Intern’s types are loaded, add the\nfollowing to your `tsconfig.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"types\": [\"intern\"]\n  }\n}\n```\n\nAlternatively, add a triple-slash directive to the top of your suite files:\n\n```ts\n/// \u003creference types=\"intern\" /\u003e\n```\n\n## Compatibility\n\nIntern can run unit tests in most browsers that support ECMAScript 5, including\nmobile browsers on Android and iOS, and in Node 6+. Note that Internet Explorer\n9 is not supported.\n\nIntern’s self-tests run against IE 10 and 11, Firefox 36 and current, Chrome 38\nand current, and Safari 9 and 10, as well as the latest LTS and current versions\nof Node.\n\nIntern can run functional tests using WebDriver-compatible applications and\nservices, including Selenium, Appium, Selendroid. It has built-in support for\ncloud testing services from [BrowserStack](https://browserstack.com),\n[CrossBrowserTesting](https://crossbrowsertesting.com),\n[SauceLabs](https://saucelabs.com), and [TestingBot](https://testingbot.com).\n\n\u003c!-- start-github-only --\u003e\n\n## More information\n\n- [Getting started](docs/getting_started.md) - Setting up Intern to test a\n  project\n- [Changes from Intern 3](docs/changes_from_3.md) - Major changes from Intern 3\n  to Intern 4\n- [How To](docs/how_to.md) - Quick answers to common questions\n- [Concepts](docs/concepts.md) - General testing concepts and definitions\n- [Architecture](docs/architecture.md) - How Intern is organized\n- [Configuration](docs/configuration.md) - How to configure Intern\n- [Writing tests](docs/writing_tests.md) - The various ways of writing tests\n  with Intern\n- [Running](docs/running.md) - How to run Intern\n- [Extending](docs/extending.md) - Extending Intern with reporters and other\n  plugins\n- [API](docs/api.md) - Summary API documentation\n- [Continuous integration](docs/ci.md) - Using Intern with CI systems\n- [Developing](docs/developing.md) - For Intern developers\n- [Contributing](CONTRIBUTING.md) - How to contribute to Intern development\n  \u003c!-- end-github-only --\u003e\n\n## Get help\n\nThe best place to ask questions and get answers about Intern is Stack Overflow.\nJust tag your question with `intern`. If you have more immediate questions, or\njust want to chat with other people interested in Intern, join the Gitter room\nat [theintern/intern](https://gitter.im/theintern/intern). See the\n[Help](docs/help.md) page for more information.\n\n\u003c!-- start-github-only --\u003e\n\n## License\n\nIntern is a JS Foundation project offered under the [New BSD](LICENSE) license.\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Ftheintern%2Fintern.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Ftheintern%2Fintern?ref=badge_large)\n\n© [SitePen, Inc.](http://sitepen.com) and its\n[contributors](https://github.com/theintern/intern/graphs/contributors)\n\n\u003cp align=\"center\"\u003eIntern’s self-tests run on\u003cbr\u003e\n\u003ca href=\"https://browserstack.com\"\u003e\u003cimg alt=\"BrowserStack logo\" src=\"https://theintern.io/images/browserstack-logo.svg\" height=\"32\" align=\"middle\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- end-github-only --\u003e\n\n\u003c!-- doc-viewer-config\n{\n    \"api\": \"docs/api.json\",\n    \"pages\": [\n        \"docs/getting_started.md\",\n        \"docs/changes_from_3.md\",\n        \"docs/how_to.md\",\n        \"docs/concepts.md\",\n        \"docs/architecture.md\",\n        \"docs/configuration.md\",\n        \"docs/writing_tests.md\",\n        \"docs/running.md\",\n        \"docs/ci.md\",\n        \"docs/extending.md\",\n        \"docs/developing.md\"\n    ]\n}\n--\u003e\n","funding_links":[],"categories":["Packages","JavaScript","TypeScript","Table of Contents","包","Testing Frameworks","Testing Frameworks [🔝](#readme)","Testing","typescript","目录","测试框架","Number","Unit Testing"],"sub_categories":["Testing","Example Projects","测试","Runner","测试相关","运行器","Other Frameworks","运行器e2e测试"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheintern%2Fintern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheintern%2Fintern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheintern%2Fintern/lists"}