https://github.com/crowdstrike/faltest

A different take on WebDriver browser testing

https://github.com/crowdstrike/faltest

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.0%) to scientific vocabulary

Keywords from Contributors

community transformers zsh-plugin archival embedded controllers projection document exports sms
Last synced: 10 months ago · JSON representation

Repository

A different take on WebDriver browser testing

Basic Info
  • Host: GitHub
  • Owner: CrowdStrike
  • License: mit
  • Language: JavaScript
  • Default Branch: main
  • Size: 3.92 MB
Statistics
  • Stars: 29
  • Watchers: 5
  • Forks: 13
  • Open Issues: 73
  • Releases: 0
Created almost 7 years ago · Last pushed 11 months ago
Metadata Files
Readme Contributing License

README.md

FalTest

A different take on WebDriver browser testing

Requirements

Make sure Node.js 14.15+ is installed.

Setup

Run the following command to install FalTest globally.

npm install --global @faltest/cli

Usage

Here are a couple examples of using the FalTest CLI.

  • faltest --tag admin !smoke --filter "^Visit .*"
  • faltest --env dev --tag smoke --share-session --headless

Default Options

Options: --help Show help [boolean] --version Show version number [boolean] --browser Type of browser to run [string] [choices: "chrome", "firefox", "edge"] [default: "chrome"] --browsers Number of browsers to run [default: 1] --port Port for WebDriver [string] [default: "0"] --headless Run browser in headless mode [boolean] [default: false] --retries When all else fails, try again! [default: 0] --target Run against a different UI server/URL [string] [choices: "default"] [default: "default"] --env, --environment Run against a different data source [string] [choices: "default"] [default: "default"] --share-webdriver Keep the WebDriver process open between test runs [boolean] [default: true] --keep-browser-open Keep the browser open between test runs (sets --share-webdriver) [boolean] [default: false] --share-session Keep the session (login, etc.) between test runs (sets --share-webdriver and --keep-browser-open)[boolean] [default: false] --size Override the browser size. ex. "--size 1024 768" --throttle-network Slow down the network so you can see the loading states better [boolean] [default: false] --tag Filter groups of tests using the #hash tagging system (hashes are optional). Prefix with ! to negate. [array] [choices: ] [default: []] --filter Filter the tests by name using a pattern [string] [default: ".*"] --duplicate Run the same test concurrently to simulate multiple users running tests at once [default: 0] --random Randomise test order[boolean] [default: false] --seed Set the random seed to reproduce test order [string] --timeouts-override Override all Mocha timeouts for debugging purposes --disable-timeouts Disable all Mocha timeouts for debugging purposes [boolean] [default: false] --disable-cleanup Disables all browser cleanup. Run `faltest-kill-orphans` to clean up manually. [boolean] [default: false] --failure-artifacts Save screenshots, html, and logs on test failure [boolean] [default: false] --failure-artifacts-output-dir Location to save failure artifacts [string] --reporter Change the Mocha reporter [string] --reporter-options Supply Mocha reporter options [string] --dry-run List the tests that would have run instead of actually running them [boolean] [default: false]

Filtering

There are a couple ways to filter tests, --tag and --filter. Tags are predefined categories you can add to narrow down your test run. This includes filtering by roles. You can also prefix a ! to a tag (ex. --tag !smoke) if you want to exclude it. If you are using Bash, you may need to escape the exclamation mark (ex. --tag \!smoke). The filter is a regular expression that can match test names. You can combine both these options.

Filtering by tags is a little different between roles and other tags. Since a test only ever has one role at a time attached to it, --tag role1 role2 would never match any tests, since tags function as a logical AND and not an OR. On the other hand, tests can be attached to more than one tag. In this case, --tag tag1 tag2 would target those tests only, and exclude the tests focusing on either tag exclusively.

Duplicating

You can duplicate you test suite to run concurrently with --duplicate 1. This is a good way to ensure that your tests work when multiple people are running them at the same time. If you wanted to run three suites at once, you would use --duplicate 2 to run two copies of your original run.

Logging

Logging can be accomplished via the DEBUG environment variable (https://github.com/visionmedia/debug). Supported variables are:

  • @faltest/remote,@faltest/lifecycle,... - basic logging
  • @faltest/remote:verbose,... - verbose logging only
  • @faltest* - all logging

An example use would be DEBUG=@faltest* faltest --tag smoke.

Failure Artifacts

Using the options --failure-artifacts and --failure-artifacts-output-dir, you can get screenshots, html, and browser logs of test failures.

Browser Versions

To override the ChromeDriver and EdgeDriver version to match your Chrome and Edge version, follow the guide here or here or here. For example:

DETECT_CHROMEDRIVER_VERSION=true DETECT_EDGEDRIVER_VERSION=true npm install

Real-world Examples

Contributing

If you need to change FalTest, see Contributing Guide.

Owner

  • Name: CrowdStrike
  • Login: CrowdStrike
  • Kind: organization
  • Email: github@crowdstrike.com
  • Location: United States of America

GitHub Events

Total
  • Delete event: 15
  • Member event: 1
  • Issue comment event: 12
  • Push event: 150
  • Pull request review event: 10
  • Pull request review comment event: 8
  • Pull request event: 50
  • Create event: 24
Last Year
  • Delete event: 15
  • Member event: 1
  • Issue comment event: 12
  • Push event: 150
  • Pull request review event: 10
  • Pull request review comment event: 8
  • Pull request event: 50
  • Create event: 24

Committers

Last synced: over 1 year ago

All Time
  • Total Commits: 1,199
  • Total Committers: 10
  • Avg Commits per committer: 119.9
  • Development Distribution Score (DDS): 0.352
Past Year
  • Commits: 73
  • Committers: 3
  • Avg Commits per committer: 24.333
  • Development Distribution Score (DDS): 0.479
Top Committers
Name Email Commits
Kelly Selden k****n@g****m 777
Renovate Bot b****t@r****m 193
renovate[bot] 2****] 175
dependabot[bot] 4****] 45
Kelly Selden 6****n 4
NathanJCBernhardt 1****t 1
Edward Pfremmer e****r 1
Prasad Bonasu s****u@h****m 1
Michal Bryxí m****i@c****m 1
Edward Pfremmer e****r@c****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 8
  • Total pull requests: 936
  • Average time to close issues: 3 months
  • Average time to close pull requests: 28 days
  • Total issue authors: 3
  • Total pull request authors: 6
  • Average comments per issue: 0.25
  • Average comments per pull request: 0.07
  • Merged pull requests: 713
  • Bot issues: 1
  • Bot pull requests: 588
Past Year
  • Issues: 0
  • Pull requests: 29
  • Average time to close issues: N/A
  • Average time to close pull requests: 3 days
  • Issue authors: 0
  • Pull request authors: 3
  • Average comments per issue: 0
  • Average comments per pull request: 0.17
  • Merged pull requests: 16
  • Bot issues: 0
  • Bot pull requests: 22
Top Authors
Issue Authors
  • kellyselden (2)
  • akfernun (1)
  • renovate[bot] (1)
Pull Request Authors
  • renovate[bot] (271)
  • kellyselden (93)
  • dependabot[bot] (42)
  • sbonasu (3)
  • NathanJCBernhardt (2)
  • akfernun (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (42) javascript (5)

Packages

  • Total packages: 9
  • Total downloads:
    • npm 5,697 last-month
  • Total dependent packages: 31
    (may contain duplicates)
  • Total dependent repositories: 45
    (may contain duplicates)
  • Total versions: 646
  • Total maintainers: 1
npmjs.org: @faltest/remote

A wrapper for the WebdriverIO remote call

  • Versions: 218
  • Dependent Packages: 5
  • Dependent Repositories: 6
  • Downloads: 1,813 Last month
Rankings
Dependent packages count: 3.7%
Downloads: 4.5%
Dependent repos count: 4.6%
Average: 5.2%
Forks count: 5.7%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/utils

Shared utils for FalTest packages

  • Versions: 38
  • Dependent Packages: 6
  • Dependent Repositories: 6
  • Downloads: 673 Last month
Rankings
Dependent packages count: 3.2%
Dependent repos count: 4.6%
Average: 5.2%
Downloads: 5.4%
Forks count: 5.7%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/lifecycle

A Mocha environment for the @faltest/remote project

  • Versions: 81
  • Dependent Packages: 5
  • Dependent Repositories: 6
  • Downloads: 638 Last month
Rankings
Dependent packages count: 3.7%
Dependent repos count: 4.6%
Average: 5.3%
Downloads: 5.3%
Forks count: 5.7%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/browser

A new browser object for WebdriverIO

  • Versions: 48
  • Dependent Packages: 4
  • Dependent Repositories: 6
  • Downloads: 503 Last month
Rankings
Dependent packages count: 4.5%
Dependent repos count: 4.6%
Average: 5.5%
Downloads: 5.6%
Forks count: 5.7%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/page-objects

A page object system using @faltest/browser

  • Versions: 74
  • Dependent Packages: 3
  • Dependent Repositories: 5
  • Downloads: 860 Last month
Rankings
Downloads: 4.9%
Dependent repos count: 5.0%
Forks count: 5.7%
Average: 5.8%
Dependent packages count: 5.9%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/mocha

A test runner for the @faltest/lifecycle project

  • Versions: 79
  • Dependent Packages: 3
  • Dependent Repositories: 5
  • Downloads: 644 Last month
Rankings
Downloads: 5.0%
Dependent repos count: 5.0%
Forks count: 5.7%
Average: 5.8%
Dependent packages count: 5.9%
Stargazers count: 7.2%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/chai

A Chai plugin for @faltest/page-objects

  • Versions: 31
  • Dependent Packages: 3
  • Dependent Repositories: 3
  • Downloads: 228 Last month
Rankings
Forks count: 5.7%
Dependent packages count: 5.9%
Dependent repos count: 6.4%
Average: 7.0%
Stargazers count: 7.2%
Downloads: 9.7%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: @faltest/cli

The CLI for the FalTest system

  • Versions: 55
  • Dependent Packages: 1
  • Dependent Repositories: 5
  • Downloads: 291 Last month
Rankings
Dependent repos count: 5.0%
Forks count: 5.7%
Downloads: 6.1%
Stargazers count: 7.2%
Average: 9.0%
Dependent packages count: 20.9%
Maintainers (1)
Last synced: 11 months ago
npmjs.org: eslint-plugin-faltest

ESLint rules for FalTest

  • Versions: 22
  • Dependent Packages: 1
  • Dependent Repositories: 3
  • Downloads: 47 Last month
Rankings
Forks count: 5.7%
Dependent repos count: 6.4%
Stargazers count: 7.2%
Average: 12.0%
Downloads: 19.6%
Dependent packages count: 20.9%
Maintainers (1)
Last synced: 11 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • actions/upload-artifact v3 composite
examples/custom-cli/package.json npm
  • @faltest/cli ^6.0.0 development
  • @faltest/lifecycle ^9.0.0 development
examples/full-suite/package.json npm
  • @faltest/chai ^6.0.0 development
  • @faltest/cli ^6.0.0 development
  • @faltest/lifecycle ^9.0.0 development
  • @faltest/mocha ^8.0.0 development
  • @faltest/page-objects ^7.0.0 development
  • chai ^4.2.0 development
  • chai-as-promised ^7.1.1 development
  • config ^3.2.2 development
examples/lifecycle-only/package.json npm
  • @faltest/lifecycle ^9.0.0 development
  • mocha ^7.0.1 development
examples/multiple-browsers/package.json npm
  • @faltest/cli ^6.0.0 development
  • @faltest/lifecycle ^9.0.0 development
examples/runner-only/package.json npm
  • @faltest/cli ^6.0.0 development
  • @faltest/lifecycle ^9.0.0 development
fixtures/global-install/package.json npm
  • @faltest/cli file:../../packages/cli
  • @faltest/lifecycle file:../../packages/lifecycle
fixtures/global-install/yarn.lock npm
  • 378 dependencies
package.json npm
  • @crowdstrike/commitlint ^7.0.0 development
  • chai ^4.2.0 development
  • chai-as-promised ^7.1.1 development
  • chai-fs ^2.0.0 development
  • chai-string ^1.5.0 development
  • connect ^3.7.0 development
  • cross-env ^7.0.0 development
  • eslint ^8.0.0 development
  • eslint-config-crowdstrike 10.1.0 development
  • eslint-config-crowdstrike-node 3.0.1 development
  • eslint-plugin-faltest ^5.0.0 development
  • eslint-plugin-json-files ^3.0.0 development
  • eslint-plugin-mocha ^10.0.0 development
  • eslint-plugin-node ^11.0.0 development
  • execa ^5.0.0 development
  • mocha ^10.0.0 development
  • mocha-helpers ^8.0.0 development
  • monorepo-next ^10.0.0 development
  • p-all ^5.0.0 development
  • remark-cli ^12.0.0 development
  • remark-preset-lint-crowdstrike ^3.0.0 development
  • renovate-config-standard ^2.0.0 development
  • serve-static ^1.14.1 development
  • sinon ^16.0.0 development
  • sinon-chai ^3.7.0 development
  • stoppable ^1.1.0 development
  • tmp 0.2.1 development
  • yargs-help-output ^4.0.0 development
packages/browser/package.json npm
  • mocha ^10.0.0 development
  • tmp 0.2.1 development
  • @faltest/utils ^7.0.0
  • verror-extra ^5.0.0
packages/chai/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
packages/cli/package.json npm
  • execa ^5.0.0 development
  • @faltest/mocha ^8.0.0
  • @faltest/remote ^11.0.0
  • @faltest/utils ^7.0.0
  • mocha ^10.0.0
  • threads ^1.6.1
  • yargs ^17.0.0
  • yn ^4.0.0
packages/lifecycle/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
  • tmp 0.2.1 development
  • @faltest/remote ^11.0.0
  • @faltest/utils ^7.0.0
  • events-async ^1.2.1
  • mocha-helpers ^8.0.0
packages/lint/package.json npm
  • eslint ^8.0.0 development
  • @faltest/chai ^6.0.0
  • requireindex ^1.2.0
packages/mocha/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
  • tmp 0.2.1 development
  • @faltest/utils ^7.0.0
  • choma ^1.2.1
  • filenamify ^6.0.0
  • glob ^10.0.0
  • mocha-helpers ^8.0.0
packages/page-objects/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
  • tmp 0.2.1 development
  • @faltest/browser ^6.0.0
  • verror-extra ^5.0.0
packages/remote/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
  • @faltest/utils ^7.0.0
  • browser-webdriver-downloader ^2.0.1
  • chromedriver 116.0.0
  • events-async ^1.2.1
  • execa ^5.0.0
  • fkill ^8.0.0
  • geckodriver 4.2.1
  • get-port ^7.0.0
  • ps-list ^8.0.0
  • webdriverio 7.32.4
  • yn ^4.0.0
packages/utils/package.json npm
  • mocha ^10.0.0 development
  • sinon ^16.0.0 development
  • tmp 0.2.1 development
  • callsites ^4.0.0
  • debug ^4.1.1
yarn.lock npm
  • 1064 dependencies