{"id":4443,"url":"https://github.com/wix/detox","last_synced_at":"2026-04-02T17:55:01.821Z","repository":{"id":37451296,"uuid":"61204547","full_name":"wix/Detox","owner":"wix","description":"Gray box end-to-end testing and automation framework for mobile apps","archived":false,"fork":false,"pushed_at":"2025-12-25T09:39:21.000Z","size":70993,"stargazers_count":11746,"open_issues_count":210,"forks_count":1921,"subscribers_count":358,"default_branch":"master","last_synced_at":"2025-12-26T02:47:42.787Z","etag":null,"topics":["android","automation","e2e-tests","hacktoberfest","hacktoberfest2024","ios","javascript","react-native","test-automation","testing","testing-tools"],"latest_commit_sha":null,"homepage":"https://wix.github.io/Detox/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wix.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-06-15T11:58:01.000Z","updated_at":"2025-12-24T14:50:17.000Z","dependencies_parsed_at":"2024-02-01T17:10:14.049Z","dependency_job_id":"4bdecc50-0952-422c-aab1-994db914c235","html_url":"https://github.com/wix/Detox","commit_stats":{"total_commits":4311,"total_committers":275,"mean_commits":"15.676363636363636","dds":0.856413825098585,"last_synced_commit":"20cdea465db383b21e0c30b21be43c18d373c6f4"},"previous_names":[],"tags_count":711,"template":false,"template_full_name":null,"purl":"pkg:github/wix/Detox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wix%2FDetox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wix%2FDetox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wix%2FDetox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wix%2FDetox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wix","download_url":"https://codeload.github.com/wix/Detox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wix%2FDetox/sbom","scorecard":{"id":114087,"data":{"date":"2025-07-07","repo":{"name":"github.com/wix/Detox","commit":"1b27e222d29b5d0847c9c022c0d1590647af76ae"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":4.7,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 10 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Code-Review","score":2,"reason":"Found 5/17 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/website.yml:40","Warn: no topLevel permission defined: .github/workflows/broken-links-scan.yml:1","Warn: no topLevel permission defined: .github/workflows/docs.yml:1","Warn: no topLevel permission defined: .github/workflows/looking-for-contributors.yml:1","Warn: no topLevel permission defined: .github/workflows/rapid-test.yml:1","Warn: no topLevel permission defined: .github/workflows/reproduction-required.yml:1","Warn: no topLevel permission defined: .github/workflows/surge-purge.yml:1","Warn: no topLevel permission defined: .github/workflows/website.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":4,"reason":"binaries present in source code","details":["Warn: binary detected: detox/android/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: detox/android/libs/genymotion-api-1.2.0.jar:1","Warn: binary detected: detox/test/android/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: examples/demo-native-android/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: examples/demo-pure-native-android/gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: examples/demo-react-native/android/gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":-1,"reason":"internal error: internal error: Client.Checks.ListCheckRunsForRef: error during graphqlHandler.setupCheckRuns: Although you appear to have the correct authorization credentials, the `wix-security` organization has an IP allow list enabled, and your IP address is not permitted to access this resource.","details":null,"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/broken-links-scan.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/broken-links-scan.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/broken-links-scan.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/broken-links-scan.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/broken-links-scan.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/broken-links-scan.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docs.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docs.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/looking-for-contributors.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/looking-for-contributors.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rapid-test.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/rapid-test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/reproduction-required.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/reproduction-required.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/support.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/support.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/surge-purge.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/surge-purge.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/surge-purge.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/surge-purge.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/website.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/website.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/website.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/website.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/wix/Detox/website.yml/master?enable=pin","Warn: npmCommand not pinned by hash: scripts/aggregate_coverage.sh:4","Warn: npmCommand not pinned by hash: scripts/install.sh:6","Warn: npmCommand not pinned by hash: scripts/install.sh:7","Warn: npmCommand not pinned by hash: scripts/upload_artifact.sh:58","Warn: npmCommand not pinned by hash: .github/workflows/surge-purge.yml:22","Warn: npmCommand not pinned by hash: .github/workflows/website.yml:35","Warn: npmCommand not pinned by hash: .github/workflows/website.yml:58","Info:   0 out of  18 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   7 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-15T22:43:29.950Z","repository_id":37451296,"created_at":"2025-08-15T22:43:29.950Z","updated_at":"2025-08-15T22:43:29.950Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28084055,"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","status":"online","status_checked_at":"2025-12-27T02:00:05.897Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","automation","e2e-tests","hacktoberfest","hacktoberfest2024","ios","javascript","react-native","test-automation","testing","testing-tools"],"created_at":"2024-01-05T20:17:12.158Z","updated_at":"2026-04-02T17:55:01.812Z","avatar_url":"https://github.com/wix.png","language":"JavaScript","funding_links":[],"categories":["Components","Index","Help, tricks, issues"],"sub_categories":["Utils \u0026 Infra","Testing"],"readme":"\u003c!-- markdownlint-configure-file { \"first-line-heading\": 0 } --\u003e\n\n[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://stand-with-ukraine.pp.ua)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Detox\" width=380 src=\"https://raw.githubusercontent.com/wix/Detox/master/docs/img/DetoxLogo.png\"/\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n  Detox\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n\u003cb\u003eGray box end-to-end testing and automation framework for mobile apps.\u003c/b\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Demo\" src=\"docs/img/Detox.gif\"/\u003e\n\u003c/p\u003e\n\u003ch1\u003e\u003c/h1\u003e\n\n\u003cimg src=\"https://user-images.githubusercontent.com/1962469/89655670-1c235c80-d8d3-11ea-9320-0f865767ef5d.png\" alt=\"\" height=24 width=1\u003e [![NPM Version](https://img.shields.io/npm/v/detox.svg?style=flat)](https://www.npmjs.com/package/detox) [![NPM Downloads](https://img.shields.io/npm/dm/detox.svg?style=flat)](https://www.npmjs.com/package/detox) [![Build status](https://badge.buildkite.com/39afde30a964a6763de9753762bc80264ba141e1c1f41fc878.svg)](https://buildkite.com/wix-mobile-oss/detox) [![Coverage Status](https://coveralls.io/repos/github/wix/Detox/badge.svg?branch=master)](https://coveralls.io/github/wix/Detox?branch=master) [![Detox is released under the MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![PR's welcome!](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://wix.github.io/Detox/docs/contributing) [![Discord](https://img.shields.io/discord/957617863550697482?color=%235865F2\\\u0026label=discord)](https://discord.gg/CkD5QKheF5) [![Twitter Follow](https://img.shields.io/twitter/follow/detoxe2e?label=Follow\\\u0026style=social)](https://twitter.com/detoxe2e)\n\n## What Does a Detox Test Look Like?\n\nThis is a test for a login screen, it runs on a device/simulator like an actual user:\n\n```js\ndescribe('Login flow', () =\u003e {\n  beforeEach(async () =\u003e {\n    await device.reloadReactNative();\n  });\n\n  it('should login successfully', async () =\u003e {\n    await element(by.id('email')).typeText('john@example.com');\n    await element(by.id('password')).typeText('123456');\n\n    const loginButton = element(by.text('Login'));\n    await loginButton.tap();\n\n    await expect(loginButton).not.toExist();\n    await expect(element(by.label('Welcome'))).toBeVisible();\n  });\n});\n```\n\n[Get started with Detox now!](https://wix.github.io/Detox/docs/introduction/getting-started)\n\n## About\n\nHigh velocity native mobile development requires us to adopt continuous integration workflows, which means our reliance on manual QA has to drop significantly. Detox tests your mobile app while it’s running in a real device/simulator, interacting with it just like a real user.\n\nThe most difficult part of automated testing on mobile is the tip of the testing pyramid - E2E. The core problem with E2E tests is flakiness - tests are usually not deterministic. We believe the only way to tackle flakiness head on is by moving from black box testing to gray box testing. That’s where Detox comes into play.\n\n- **Cross Platform:** Write end-to-end tests in JavaScript for React Native apps (Android \u0026 iOS).\n- **Debuggable:** Modern async-await API allows breakpoints in asynchronous tests to work as expected.\n- **Automatically Synchronized:** Stops flakiness at the core by monitoring asynchronous operations in your app.\n- **Made For CI:** Execute your E2E tests on CI platforms like Travis CI, Circle CI or Jenkins without grief.\n- **Runs on Devices:** Gain confidence to ship by testing your app on a device/simulator just like a real user (not yet supported on iOS).\n- **Test Runner Agnostic:** Detox provides a set of APIs to use with any test runner without it. It comes with [Jest](https://jestjs.io) integration out of the box.\n\n## Supported React Native Versions\n\nDetox was built from the ground up to support React Native projects.\n\nWhile Detox should work out of the box with any React Native version of the latest minor releases,\nthe _official_ versions compatibility is provided according to the following:\n\n- **RN `v0.77.x` - `v0.83.x`:** Fully compatible with React Native's [\"New Architecture\"](https://reactnative.dev/docs/the-new-architecture/landing-page).\n  Newer RN versions might work with Detox, but they've not been thoroughly tested by the Detox team yet.\n\nAlthough we do not officially support older React Native versions, we do our best to keep Detox compatible with them.\n\n\u003e In case of a problem with an unsupported version of React Native, please [submit an issue](https://github.com/wix/Detox/issues/new/choose) or write us in our [Discord server](https://discord.gg/CkD5QKheF5) and we will do our best to help out.\n\n### Known Issues with React Native\n\n- Visibility edge-case on Android: see this [RN issue](https://github.com/facebook/react-native/issues/23870).\n\n## Get Started with Detox\n\nRead the [Getting Started Guide](https://wix.github.io/Detox/docs/introduction/getting-started) to get Detox running on your app in less than 10 minutes.\n\n## Documents Site\n\nExplore further about using Detox from our new **[website](https://wix.github.io/Detox/)**.\n\n## Core Principles\n\nWe believe that the only way to address the core difficulties with mobile end-to-end testing is by rethinking some of the principles of the entire approach. See what Detox [does differently](https://wix.github.io/Detox/docs/articles/design-principles).\n\n## Contributing to Detox\n\nDetox has been open-source from the first commit. If you’re interested in helping out with our roadmap, please see issues tagged with the [\u003cimg src=\"docs/img/github-label-contributors.png\"\u003e](https://github.com/wix/Detox/labels/user%3A%20looking%20for%20contributors) label. If you have encountered a bug or would like to suggest a new feature, please open an issue.\n\nDive into Detox core by reading the [Detox Contribution Guide](https://wix.github.io/Detox/docs/contributing).\n\n## License\n\n- Detox is licensed under the [MIT License](LICENSE)\n\n## Non-English Resources (Community)\n\n- [Getting Started (Brazilian Portuguese)](https://medium.com/quia-digital/iniciando-com-detox-framework-1-4-ce31ad7ae812)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwix%2Fdetox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwix%2Fdetox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwix%2Fdetox/lists"}