Skip to main content

Testing Google Analytics implementations within CI pipelines

Project description

GAUnit

GAUnit is a Python library for testing Google Analytics implementations with Selenium or RobotFramework test cases.

It is designed to be used within your pipelines in various environments such as traditional websites, Single Page Applications or Mobile Apps.

Usage

Define your expected GA tracking plan for a given test case. Example : tracking the "play" button on a video:

{
    "my_test_case": [
        {
            "t": "pageview",
            "dp": "my_product_page_name"
        },
        {
            "t": "event",
            "ec": "Video",
            "ea": "Play"
        }]
}

Run your test wih Python and check it against your expected tracking plan:

import gaunit
import browsermobproxy

# Run your Selenium test here with browsermob-proxy and export har
# ...

result = gaunit.check_har("my_test_case", tracking_plan = "tracking_plan.json", har_path="my_test_case.har")
print(checklist)  # [True, False] oups! pageview is fine but video "play" button is not properly tracked.

See a full working example here. You can also use GAUnit within unittest or RobotFramework test cases (WIP : we will soon add samples).

Installation

You will need Python 3.6+ installed.

  • install gaunit :
pip3 install gaunit  # Linux
pip install gaunit  # Windows

Run your first automated tests

  • Download browsermob-proxy latest release (note: install Java).

    • Add bin/ directory to your %PATH
  • Download a webdriver. To run the example, get Geckodriver latest release

    • add it to your %PATH or copy it in your working directory

Test with Selenium Python

python3 samples/test_home_engie.py  # Linux
python samples/test_home_engie.py  # Windows

If you want to use RobotFramework, check GAUnit Library for Robot Framework

Manually control a HAR file

You can manually browse your website, export a HAR file and check it through command line :

$ gaunit home_engie home_engie.har
[True, True, True]
$ gaunit -h
usage: gaunit [-h] [-t TRACKING_PLAN] [-v] test_case har_file

positional arguments:
  test_case             name of test case
  har_file              path to HAR file

optional arguments:
  -h, --help            show this help message and exit
  -t TRACKING_PLAN, --tracking_plan TRACKING_PLAN
                        path to tracking plan
  -v, --verbose         print all trackers with their status and all hits
                        recorded

Why GAUnit?

Testing your Google Analytics implementation is often time consuming and, let's say it, sometimes very boring!

But most of all, if your tracking is not reliable as your application evolves, your reportings won't be either. People in your company will loose confidence in your reportings when they have to take important business decisions. You will provide great reportings if you integrate tracking in your DevOps pipelines (and thus, in you Quality Assurance plan).

Some great tools let you automatically test your DataLayer, but sometimes it is not enough: you not only want to test pageviews, but also events like clicks and Ecommerce. You might want to test tracking in various environments like Single Page Application, AMP or Mobile Applications. GAUnit lets you do just that.

Contributing

GAUnit can be useful for several companies. Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Licence

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

GAUnit was inspired by WAUnit. We decided to create a new library commpatible with Python 3 and easier to set up.

Roadmap

  • Complete test case samples with RobotFramework mobile app
  • Tracking plan using analytics.js, GTM or GA4 syntax
  • Dockerize (for simpler set up)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gaunit-0.1.tar.gz (10.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page