Skip to main content

Build Status c4t publish PyPI - Version PyPI - Python Version PyPI - Format PyPI - License 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

...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

(venv) $ pip install c4t
(venv) $

From GitHub

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

Verify

In a REPL

Show version

(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

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

Display package documentation

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

Usage

In code

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

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

(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
(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

# 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

(venv) $ c4t install --version 116.0.5794.0

Install a last known good version from a list

# 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

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

Show the currently active version

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

Show a list of installed versions

# 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

(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

(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
  2. Set/switch the active version
  3. 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

Metadata

Release files for c4t 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for c4t 1.6.0
File Size Uploaded
c4t-1.6.0.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for c4t 1.6.0
File Interpreter ABI Platform
c4t-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.9 kB

Release files / c4t-1.6.0.tar.gz

Download URL c4t-1.6.0.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9f87969cccb3a5aeed86e61558cf3f20510c6daac615f53ee46654a91c4f0164
BLAKE2b-256 checksum
How to use checksums
fa3e0de5dcdba93776340c91bc613a0e3da16f49aca707ac22111604dc008cab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / c4t-1.6.0-py3-none-any.whl

Download URL c4t-1.6.0-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e55e3c911aab237a3bb8c3ad03b25bec3a1d081ba71ed4c696665e19bb190535
BLAKE2b-256 checksum
How to use checksums
2c4ffb34281e7cdf1170266e77bd1dc3f85f872cb34deb2c5597b01ba866d2c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page