c4t


Namec4t JSON
Version 1.6.0 PyPI version JSON
download
home_pageNone
SummaryInstall Chrome for Testing assets.
upload_time2024-05-04 02:50:59
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8.10
licenseNone
keywords chrome testing selenium chromedriver cft
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Build Status](https://dev.azure.com/p4irin/c4t/_apis/build/status%2Fp4irin.c4t?branchName=master&jobName=BuildAndTest&configuration=BuildAndTest%20Python38)](https://dev.azure.com/p4irin/c4t/_build/latest?definitionId=5&branchName=master)
[![c4t publish](https://github.com/p4irin/c4t/actions/workflows/python-publish.yml/badge.svg)](https://github.com/p4irin/c4t/actions/workflows/python-publish.yml)
![PyPI - Version](https://img.shields.io/pypi/v/c4t)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/c4t)
![PyPI - Format](https://img.shields.io/pypi/format/c4t)
![PyPI - License](https://img.shields.io/pypi/l/c4t)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
# c4t: Chrome for Testing - v1.6.0

Install _Chrome for Testing_ assets. A flavor of Chrome, specifically for testing and a matching chromedriver. Currently, the version of assets installed is for _linux64_ platforms only.

## Why Chrome for Testing?

Taken from [the Chrome Developers Blog](https://developer.chrome.com/blog/chrome-for-testing/)

> ...setting up an adequate browser testing environment is notoriously difficult...
>
> You want consistent, reproducible results across repeated test runs—but this may not happen if the browser executable or binary decides to update itself in between two runs.
>
>You want to pin a specific browser version and check that version number into your source code repository, so that you can check out old commits and branches and re-run the tests against the browser binary from that point in time.
>
> Not only do you have to download a Chrome binary somehow, you also need a correspondingly-versioned ChromeDriver binary to ensure the two binaries are compatible.
>
> Chrome for Testing is a dedicated flavor of Chrome targeting the testing use case, without auto-update, integrated into the Chrome release process, made available for every Chrome release
>
> ...finding a matching Chrome and ChromeDriver binary can be completely eliminated by integrating the ChromeDriver release process into the Chrome for Testing infrastructure.

## Requirements

To use Chrome for Testing assets you'll need a version of Selenium > 4.11.0

## Installation

### From PyPI

```bash
(venv) $ pip install c4t
(venv) $
```

### From GitHub

```bash
(venv) $ pip install git+https://github.com/p4irin/c4t.git
(venv) $
```

## Verify

### In a REPL

#### Show version

```bash
(venv) $ python
Python 3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import c4t
>>> c4t.__version__
'<major>.<minor>.<patch>'
>>>
```

### Or on the command line

#### Show version

```bash
(venv) $ c4t --version
v1.1.0
(venv) $
```

#### Display package documentation

```bash
(venv) $ python -m pydoc c4t
(venv) $
```

## Usage

### In code

#### Install the default, the latest stable version and use it with Selenium

```bash
Python 3.8.10 (default, May 26 2023, 14:05:08) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import c4t
>>> assets = c4t.Assets()
>>> assets.install()
Create directory ${HOME}/.c4t-assets/124.0.6367.91
Downloading chrome-linux64.zip.
100% [......................................................................] 146689409 / 146689409

Downloading chromedriver-linux64.zip.
100% [..........................................................................] 7508443 / 7508443

Unzipping chrome-linux64.zip
Unzipping chromedriver-linux64.zip
Creating symlink to chrome version 117.0.5938.62
Creating symlink to chromedriver version 117.0.5938.62
Finished installing version 117.0.5938.62 of Chrome for Testing and Chromedriver.
-------------------------------------------
Version 117.0.5938.62 is the active version
-------------------------------------------
>>> from selenium.webdriver import ChromeOptions, ChromeService, Chrome
>>> options = ChromeOptions()
>>> options.binary_location = c4t.location.chrome
>>> service = ChromeService(executable_path=c4t.location.chromedriver)
>>> browser = Chrome(options=options, service=service)
>>> browser.get('https://pypi.org/user/p4irin/')
>>> browser.close()
>>> browser.quit()
>>>
```

### On the command line

#### Display command line help

```bash
(venv) $ c4t --help
usage: c4t [-h] [-V] {install,path,list,switch,delete} ...

Install 'Chrome for Testing' assets

options:
  -h, --help            show this help message and exit
  -V, --version         Show version and exit.

Commands:
  {install,path,list,switch,delete}
    install             Install a version of 'Chrome for Testing' assets
    path                Show the installation path of assets and exit
    list                List versions
    switch              Switch the active version
    delete              Delete an installed version

Reference: https://github.com/GoogleChromeLabs/chrome-for-testing
```

```bash
(venv) $ c4t install --help
usage: c4t install [-h] [--version VERSION] [-l]

Install a version of 'Chrome for Testing' assets.

options:
  -h, --help            show this help message and exit
  --version VERSION     The version of 'Chrome for Testing' assets to install. The default is 'latest'
  -l, --last-known-good-version
                        Install a last known good version from a list
```

#### Install the default, the latest stable version

```bash
# By default assets are installed in ${HOME}/.c4t-assets
# To use a different path, set the C4T_PATH_TO_ASSETS environment variable.
# e.g.: export C4T_PATH_TO_ASSETS=<path>
# Add this export to your .bashrc so the path is set for every bash session.
(venv) $ c4t install
```

#### Install a specific version

```bash
(venv) $ c4t install --version 116.0.5794.0
```

#### Install a last known good version from a list

```bash
# Notice the list also indicates versions you already installed
(venv) $ c4t install -l
0 - Stable version=124.0.6367.91, revision=1274542, installed
1 - Beta version=125.0.6422.26, revision=1287751
2 - Dev version=126.0.6439.0, revision=1292160, installed
3 - Canary version=126.0.6449.0, revision=1293886
Select a version by number:
```

#### Show installation path of assets

```bash
(venv) $ c4t path
Path to assets: /home/p4irin/.c4t-assets
```

#### Show the currently active version

```bash
(venv) $ c4t list --active
Active version of 'Chrome for Testing' assets installed: 124.0.6367.91
```

#### Show a list of installed versions

```bash
# Notice the active version is marked 'active'
(venv) $ c4t list --installed
0 - 116.0.5794.0
1 - 124.0.6367.91, active
2 - 125.0.6422.14
3 - 126.0.6439.0
```

#### Show a list of last known good versions

```bash
(venv) $ c4t list --last-known-good-versions
0 - Stable version=124.0.6367.91, revision=1274542, installed
1 - Beta version=125.0.6422.26, revision=1287751
2 - Dev version=126.0.6439.0, revision=1292160, installed
3 - Canary version=126.0.6449.0, revision=1293886
```

#### Switch active version

```bash
(venv) $ c4t switch
0 - 116.0.5794.0
1 - 124.0.6367.91, active
2 - 125.0.6422.14
3 - 126.0.6439.0
Select a version by number: 0
Creating symlink to chrome version 116.0.5794.0
Creating symlink to chromedriver version 116.0.5794.0
Active version is now: 116.0.5794.0
```

### Common workflow

1. Install one or more versions of Chrome for testing assets
1. Set/switch the active version
1. Run your Selenium Webdriver tests with the active version of Chrome for testing

E.g., this allows for quickly switching back to a previous version of Chrome to run your tests against in case of a regression on a recent/latest version. For example, a test failing against the latest of Chrome, did it pass consistently on the previous version or is it flaky and in need for a more robust implementation?

## Reference

- [Blog](https://developer.chrome.com/blog/chrome-for-testing/)
- [GitHub](https://github.com/GoogleChromeLabs/chrome-for-testing)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "c4t",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8.10",
    "maintainer_email": null,
    "keywords": "chrome, testing, selenium, chromedriver, cft",
    "author": null,
    "author_email": "p4irin <139928764+p4irin@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/fa/3e/0de5dcdba93776340c91bc613a0e3da16f49aca707ac22111604dc008cab/c4t-1.6.0.tar.gz",
    "platform": null,
    "description": "[![Build Status](https://dev.azure.com/p4irin/c4t/_apis/build/status%2Fp4irin.c4t?branchName=master&jobName=BuildAndTest&configuration=BuildAndTest%20Python38)](https://dev.azure.com/p4irin/c4t/_build/latest?definitionId=5&branchName=master)\n[![c4t publish](https://github.com/p4irin/c4t/actions/workflows/python-publish.yml/badge.svg)](https://github.com/p4irin/c4t/actions/workflows/python-publish.yml)\n![PyPI - Version](https://img.shields.io/pypi/v/c4t)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/c4t)\n![PyPI - Format](https://img.shields.io/pypi/format/c4t)\n![PyPI - License](https://img.shields.io/pypi/l/c4t)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n# c4t: Chrome for Testing - v1.6.0\n\nInstall _Chrome for Testing_ assets. A flavor of Chrome, specifically for testing and a matching chromedriver. Currently, the version of assets installed is for _linux64_ platforms only.\n\n## Why Chrome for Testing?\n\nTaken from [the Chrome Developers Blog](https://developer.chrome.com/blog/chrome-for-testing/)\n\n> ...setting up an adequate browser testing environment is notoriously difficult...\n>\n> You want consistent, reproducible results across repeated test runs\u2014but this may not happen if the browser executable or binary decides to update itself in between two runs.\n>\n>You want to pin a specific browser version and check that version number into your source code repository, so that you can check out old commits and branches and re-run the tests against the browser binary from that point in time.\n>\n> Not only do you have to download a Chrome binary somehow, you also need a correspondingly-versioned ChromeDriver binary to ensure the two binaries are compatible.\n>\n> Chrome for Testing is a dedicated flavor of Chrome targeting the testing use case, without auto-update, integrated into the Chrome release process, made available for every Chrome release\n>\n> ...finding a matching Chrome and ChromeDriver binary can be completely eliminated by integrating the ChromeDriver release process into the Chrome for Testing infrastructure.\n\n## Requirements\n\nTo use Chrome for Testing assets you'll need a version of Selenium > 4.11.0\n\n## Installation\n\n### From PyPI\n\n```bash\n(venv) $ pip install c4t\n(venv) $\n```\n\n### From GitHub\n\n```bash\n(venv) $ pip install git+https://github.com/p4irin/c4t.git\n(venv) $\n```\n\n## Verify\n\n### In a REPL\n\n#### Show version\n\n```bash\n(venv) $ python\nPython 3.8.10 (default, Jun  2 2021, 10:49:15) \n[GCC 9.4.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import c4t\n>>> c4t.__version__\n'<major>.<minor>.<patch>'\n>>>\n```\n\n### Or on the command line\n\n#### Show version\n\n```bash\n(venv) $ c4t --version\nv1.1.0\n(venv) $\n```\n\n#### Display package documentation\n\n```bash\n(venv) $ python -m pydoc c4t\n(venv) $\n```\n\n## Usage\n\n### In code\n\n#### Install the default, the latest stable version and use it with Selenium\n\n```bash\nPython 3.8.10 (default, May 26 2023, 14:05:08) \n[GCC 9.4.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import c4t\n>>> assets = c4t.Assets()\n>>> assets.install()\nCreate directory ${HOME}/.c4t-assets/124.0.6367.91\nDownloading chrome-linux64.zip.\n100% [......................................................................] 146689409 / 146689409\n\nDownloading chromedriver-linux64.zip.\n100% [..........................................................................] 7508443 / 7508443\n\nUnzipping chrome-linux64.zip\nUnzipping chromedriver-linux64.zip\nCreating symlink to chrome version 117.0.5938.62\nCreating symlink to chromedriver version 117.0.5938.62\nFinished installing version 117.0.5938.62 of Chrome for Testing and Chromedriver.\n-------------------------------------------\nVersion 117.0.5938.62 is the active version\n-------------------------------------------\n>>> from selenium.webdriver import ChromeOptions, ChromeService, Chrome\n>>> options = ChromeOptions()\n>>> options.binary_location = c4t.location.chrome\n>>> service = ChromeService(executable_path=c4t.location.chromedriver)\n>>> browser = Chrome(options=options, service=service)\n>>> browser.get('https://pypi.org/user/p4irin/')\n>>> browser.close()\n>>> browser.quit()\n>>>\n```\n\n### On the command line\n\n#### Display command line help\n\n```bash\n(venv) $ c4t --help\nusage: c4t [-h] [-V] {install,path,list,switch,delete} ...\n\nInstall 'Chrome for Testing' assets\n\noptions:\n  -h, --help            show this help message and exit\n  -V, --version         Show version and exit.\n\nCommands:\n  {install,path,list,switch,delete}\n    install             Install a version of 'Chrome for Testing' assets\n    path                Show the installation path of assets and exit\n    list                List versions\n    switch              Switch the active version\n    delete              Delete an installed version\n\nReference: https://github.com/GoogleChromeLabs/chrome-for-testing\n```\n\n```bash\n(venv) $ c4t install --help\nusage: c4t install [-h] [--version VERSION] [-l]\n\nInstall a version of 'Chrome for Testing' assets.\n\noptions:\n  -h, --help            show this help message and exit\n  --version VERSION     The version of 'Chrome for Testing' assets to install. The default is 'latest'\n  -l, --last-known-good-version\n                        Install a last known good version from a list\n```\n\n#### Install the default, the latest stable version\n\n```bash\n# By default assets are installed in ${HOME}/.c4t-assets\n# To use a different path, set the C4T_PATH_TO_ASSETS environment variable.\n# e.g.: export C4T_PATH_TO_ASSETS=<path>\n# Add this export to your .bashrc so the path is set for every bash session.\n(venv) $ c4t install\n```\n\n#### Install a specific version\n\n```bash\n(venv) $ c4t install --version 116.0.5794.0\n```\n\n#### Install a last known good version from a list\n\n```bash\n# Notice the list also indicates versions you already installed\n(venv) $ c4t install -l\n0 - Stable version=124.0.6367.91, revision=1274542, installed\n1 - Beta version=125.0.6422.26, revision=1287751\n2 - Dev version=126.0.6439.0, revision=1292160, installed\n3 - Canary version=126.0.6449.0, revision=1293886\nSelect a version by number:\n```\n\n#### Show installation path of assets\n\n```bash\n(venv) $ c4t path\nPath to assets: /home/p4irin/.c4t-assets\n```\n\n#### Show the currently active version\n\n```bash\n(venv) $ c4t list --active\nActive version of 'Chrome for Testing' assets installed: 124.0.6367.91\n```\n\n#### Show a list of installed versions\n\n```bash\n# Notice the active version is marked 'active'\n(venv) $ c4t list --installed\n0 - 116.0.5794.0\n1 - 124.0.6367.91, active\n2 - 125.0.6422.14\n3 - 126.0.6439.0\n```\n\n#### Show a list of last known good versions\n\n```bash\n(venv) $ c4t list --last-known-good-versions\n0 - Stable version=124.0.6367.91, revision=1274542, installed\n1 - Beta version=125.0.6422.26, revision=1287751\n2 - Dev version=126.0.6439.0, revision=1292160, installed\n3 - Canary version=126.0.6449.0, revision=1293886\n```\n\n#### Switch active version\n\n```bash\n(venv) $ c4t switch\n0 - 116.0.5794.0\n1 - 124.0.6367.91, active\n2 - 125.0.6422.14\n3 - 126.0.6439.0\nSelect a version by number: 0\nCreating symlink to chrome version 116.0.5794.0\nCreating symlink to chromedriver version 116.0.5794.0\nActive version is now: 116.0.5794.0\n```\n\n### Common workflow\n\n1. Install one or more versions of Chrome for testing assets\n1. Set/switch the active version\n1. Run your Selenium Webdriver tests with the active version of Chrome for testing\n\nE.g., this allows for quickly switching back to a previous version of Chrome to run your tests against in case of a regression on a recent/latest version. For example, a test failing against the latest of Chrome, did it pass consistently on the previous version or is it flaky and in need for a more robust implementation?\n\n## Reference\n\n- [Blog](https://developer.chrome.com/blog/chrome-for-testing/)\n- [GitHub](https://github.com/GoogleChromeLabs/chrome-for-testing)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Install Chrome for Testing assets.",
    "version": "1.6.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/p4irin/c4t/issues",
        "Homepage": "https://github.com/p4irin/c4t"
    },
    "split_keywords": [
        "chrome",
        " testing",
        " selenium",
        " chromedriver",
        " cft"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c4ffb34281e7cdf1170266e77bd1dc3f85f872cb34deb2c5597b01ba866d2c4",
                "md5": "bd85b897bcf3fd2f69b141c2d42ecc46",
                "sha256": "e55e3c911aab237a3bb8c3ad03b25bec3a1d081ba71ed4c696665e19bb190535"
            },
            "downloads": -1,
            "filename": "c4t-1.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bd85b897bcf3fd2f69b141c2d42ecc46",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8.10",
            "size": 10238,
            "upload_time": "2024-05-04T02:50:58",
            "upload_time_iso_8601": "2024-05-04T02:50:58.343543Z",
            "url": "https://files.pythonhosted.org/packages/2c/4f/fb34281e7cdf1170266e77bd1dc3f85f872cb34deb2c5597b01ba866d2c4/c4t-1.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fa3e0de5dcdba93776340c91bc613a0e3da16f49aca707ac22111604dc008cab",
                "md5": "3d63cb0555e5429acec14e9b6f7b8e7e",
                "sha256": "9f87969cccb3a5aeed86e61558cf3f20510c6daac615f53ee46654a91c4f0164"
            },
            "downloads": -1,
            "filename": "c4t-1.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3d63cb0555e5429acec14e9b6f7b8e7e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8.10",
            "size": 13657,
            "upload_time": "2024-05-04T02:50:59",
            "upload_time_iso_8601": "2024-05-04T02:50:59.891159Z",
            "url": "https://files.pythonhosted.org/packages/fa/3e/0de5dcdba93776340c91bc613a0e3da16f49aca707ac22111604dc008cab/c4t-1.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-04 02:50:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "p4irin",
    "github_project": "c4t",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "c4t"
}
        
Elapsed time: 2.84664s