TL;DR: User experience is too important to be left to designers. User journey testing that helps to build those great experiences is too important to be left to testers or developers. Read on to see why it must be a team sport and how you can enable your entire team to be part of it.

User Journey, simply put, is (a) path user may take to accomplish a goal. At times, this may involve just a single application like a website, web application or a mobile application. Other times, this may involve multiple applications, accessed in certain sequence. Even in cases where a single application is presented to users, that single application typically assembles all those interactions behind the scenes.

So it is imperative for a team that is striving to build a great, seamless experience to understand the ‘entire’ user journey and build solutions with users at the front and center. This is different from a systems based approach, where the focus is on building and optimizing systems to support and deliver capabilities.

At Softrams, we call the design approach Human Experience (HX) Design, to build engaging and empowering digital services. Our overall approach can be simplified with the following four ideas:

  • Put users at the front and center
  • Design and build with users, not just for users
  • Leverage technology to empower users
  • Build iteratively and learn more about users at every iteration

User Journey tests; tests that mimics and validates a path user may take to accomplish a goal, are hence critical, particularly in this modern world of micro-services and micro-frontends where the final end user experience is assembled from varied sources and backend systems. For almost all non-trivial applications, this end user experience is built by multiple teams.

User journey testing should not be confused with ‘Usability Testing‘. Usability testing is done by real users of the product/service as part of Human Experience Design process to evaluate if solution is indeed useful and usable. Real users are typically asked to complete tasks and/or accomplish certain goals as our teams watch and learn.

While slightly different with respect to focus and objectives, these tests are also referred to as end-to-end tests, acceptance tests etc. In some organizations, there are dedicated teams to perform these tests. Some teams (often referred to as QA teams) perform these tests manually, clicking through as a typical user interacts with a web application for example. Some teams hire ‘Automation Engineers’ to build ‘browser automation’ test suites so that these tests can be run in an automated fashion. Some organizations tend to push this responsibility to developers that build those very applications to build these automated end to end tests as part of development itself and eliminate dedicated QA or Automation teams. Some organizations use a hybrid approach in that continuum.

As building great user experiences is a team sport, we believe that this important aspect of User Journey tests cannot be left to developers, QA, or automation engineers alone, but this must be a team sport as well, where every member of the team must be engaged and be able to contribute.

This requires us to build that culture in the team to begin with and use tools and processes that nurture this culture.

One important aspect of this approach is to use tools that are accessible to everybody and enable everybody in the team, those with programming background and those without programming background. Traditionally any testing or automation tools are left to developers or automation engineers as it requires writing code to build these automation tests.

We evaluated multiple tools and finally chose Gauge framework about two years ago and have been able to successfully implement it across the organization. We also built some supporting tools to enable our teams to successfully adapt the framework in various products.

Gauge + Taiko Framework

Gauge with Taiko driver offers significant benefits to building user journey tests. You may learn more at https://gauge.org/, but here are key benefits that made a big impact to our teams.

  • Tests are written in plain english using Markdown so anybody in the team can contribute
  • Allows creating easy, readable, and maintainable tests by anybody in the team
  • Great interactive report and documentation for test runs that include a screenshot for all failures
  • Ease and flexibility to organize test cases in multiple ways to run a sub-set of test cases etc.

Fully configured browser based environments

We have also created a fully browser based environment for non-programmers to easily access test projects and environments to review, contribute, and run tests (without having to install and setup locally). This provides a docker container based environment with all test tooling setup and opens VS Code inside browser. You may provision and run workspaces using these containers to offer a fully automated browser based test environments.

Check out https://github.com/softrams/automation-toolset for more.

Softrams Automation Toolset

Gauge Taiko Steps to cover most common scenarios

Gauge Taiko Steps is an open sourced and free to use implementation of most of the common actions a typical user will rely on to interact with a web application. This repository implements common gauge steps for Taiko API, so that tests can be created in plain language without having to programmatically implement steps for most common scenarios. This means, anybody in the team can write fully executable and verifiable test specifications, in plain language, without any additional programming or development needed.

Check out https://github.com/softrams/gauge-taiko-steps for more

Softrams Gauge Taiko Steps

Sample Test Scenario

I would like to show a very simple test scenario to demonstrate the readability of test case, which is still a fully executable and automated test case. Each line that begins with * is an executable test step. You can see the plain language used in each step (compared with typical automation test that only developers can understand).

# Navigation User Journey Test
This is the place you explain the key user journey scenario in plain text or Markdown.

You may additionally **add more notes** about this test scenario. 

In this sample, we will visit https://www.cdc.gov website, one of the most widely accssed health information website and search for Covid information.


## Open the CDC.gov website and search for Covid

Visit CDC.gov website
* Goto "https://www.cdc.gov"

Verify that page is correctly loaded by looking for specific text on the page. 
The presence of this text "About CDC" confirms that page has been loaded fully.
* Check text "About CDC" exists

Now the page has been fully loaded, go ahead and run Accessibility check to see 
if there are any accessibility issues
* Audit page for accessibility


Let us test how the search functionality work on the page, by searching for "Covid" in Search box and
press Enter key on keyboard. 
* Write "Covid" into "Search"
* Press "Enter"

Once search page is fully displayed, let us go ahead and verify if there are any accessibility issues on the page
> Note the flexibility in the framework to evaluate Accessibility at each user interaction on each page. 

* Audit page for accessibility

Go to Videos tab and look for a specific video. Again, once the page is loaded audit for accessibility
* Click "Videos"
* Check text "Know Your Risk of Getting COVID-19" exists
* Audit page for accessibility

Once the test is run, here is a screenshot of the test report, again to demonstrate the ease and readability of the test case, by anybody in the team.

Screenshot showing a test run
Sample Test Case

Since the adoption about two years ago, Softrams teams have built 1000s of test cases, with contributions from every member on the team across many programs.

If you like what you see, checkout the getting started with the framework post.

We are eager to know how others are approaching to build user journey tests. Let us know your thoughts and ideas. Also, do try to use the tools or frameworks shared in this post and provide your feedback.

We are honored to have these awards

Tech Industry
Disruptive Tech Fast 50 Award
Inc 5000 Award
75 WD

My previous post, ‘Automating User Journey Tests‘, talked about the need for accessibility of user journey tests for each team member and how we chose Gauge as our framework of choice. I also introduced our open source steps library to make this possible for everybody in the team, irrespective of their programming background, to be able to contribute to user journey tests. In this post, I will expand on how to get started with the framework.

Please note that we expect the first few steps of this setup to be done by team members with a programming background and offer a fully configured workspace to the rest of the team members. Refer your colleagues with devops, development or automation skills to this repo that offers a fully setup workspace as well if your teams use container based workspaces.

Install Dependencies

These instructions are good for installing Gauge on MacOS. Please refer to Gauge docs for installing on Windows or Linux environments.

Before we begin, you must have Nodejs installed. You may install with homebrew or use appropriate installation package from Nodejs downloads page.

// Install Nodejs
brew install node

// Install Gauge
brew install gauge

// Alternately, you may also use NPM to install Gauge
// npm install -g @getgauge/cli

While not mandatory, we strongly recommend using VSCode as code editor or integrated development environment, as Gauge comes with a great extension for VSCode that makes working with user journey tests a breeze.

Setting up a new project

Start by creating a new folder for the user journey automation project and go inside the new folder created. If you would like to add user journey automation to an existing project, go to the respective folder and follow the command prompts below to proceed further.

// Create a new folder
mkdir gauge-taiko-demo

// go inside the folder
cd gauge-taiko-demo

// initialize a new Gauge project, that uses javascript and Taiko driver/test runner.
gauge init js

// Run default tests generated to verify everything is successful
npm test

Using Gauge Taiko Steps

In the next couple of steps, we will install Gauge Taiko Steps that will help build user journey tests for a majority of common scenarios without developing any code. Please refer to documentation at https://github.com/softrams/gauge-taiko-steps for more details.

// Install Gauge Taiko Steps
npm i @softrams/gauge-taiko-steps

// To include Gauge Taiko Steps to your project, update STEP_IMPL_DIR variable in./env/default/js.properties from: STEP_IMPL_DIR = tests to
STEP_IMPL_DIR = node_modules/@softrams/gauge-taiko-steps/lib, \
                tests

// Delete the default files generated during project setup
rm specs/example.spec
rm tests/step_implementation.js

That’s all! This setup is everything you need to build your first user journey test.

Creating Your First User Journey Test

Create a new file inside specs folder. For this demo, this file will be called, navigation.spec. Open the file in an editor and start creating your first step.

In the first step, we will just open cdc.gov website and check if text “About CDC” exists.

# Navigation User Journey Test
You may optionally add any notes in Markdown format

## Open CDC.gov website and check for text "About CDC" exists
* Goto "https://www.cdc.gov"
* Check text "About CDC" exists 

That’s it! Go ahead and run tests now. If everything is setup properly, you should see test executed successfully.

// Run tests
npm test

// You should see an output like this, if everything goes well

> gauge-taiko-template@ test /demos/gauge-taiko-demo
> gauge run specs/

# Navigation User Journey Test
  ## Open the CDC.gov website	 ✔ ✔

Successfully generated html-report to => /demos/gauge-taiko-demo/reports/html-report/index.html

Specifications:	1 executed	1 passed	0 failed	0 skipped
Scenarios:	1 executed	1 passed	0 failed	0 skipped

Total time taken: 3.512s

You may now open the test report in HTML file to easily review tests.

open ./reports/html-report/index.html

Here is a sample screenshot of the HTML report

In the upcoming posts, I will cover various capabilities and build a variety of user journey tests including accessibility audits without any additional programming. Please let me know if you have any questions or feedback by leaving a comment.

We are honored to have these awards

Tech Industry
Disruptive Tech Fast 50 Award
Inc 5000 Award
75 WD

At Softrams, we believe building great software solutions require a diverse, cross functional team with all hands on deck. One of the most important aspects the team focuses on is to automate end to end user journey tests and acceptance tests to enable continuous delivery of value. To make sure everybody in the team will be able to review and actively contribute to building user journey tests, we need a testing framework that is accessible to everyone, irrespective of programming background.

After evaluating a few options, we chose Gauge, which allows writing tests in plain language that every member of the team can understand. When needed, it allows enriching with additional contextual documentation and links with simple markdown semantics. However, every step in a test scenario needs to be translated to an action that can be executed by a test runner in the context of a browser. This is almost always left to test automation engineers and developers. We chose to bridge that gap as well by completely eliminating programming or development for each step.

Introducing Gauge Taiko Steps, an open sourced and free to use implementation of most of the common actions a typical user will rely on to interact with a web application. This repository implements common gauge steps for Taiko API, so that tests can be created in plain language without having to programmatically implement steps for most common scenarios. This means, anybody in the team can write fully executable and verifiable test specifications, in plain language, without any additional programming or development needed.

Check out https://github.com/softrams/gauge-taiko-steps for more

Softrams Gauge Taiko Steps

We have also created a fully browser based environment for non-programmers to easily access test projects and environments to review, contribute and run tests (without having to install and setup locally). This provides a docker container based environment with all test tooling setup and opens VS Code inside browser. You may provision and run workspaces using these containers to offer a fully automated browser based test environments.

Check out https://github.com/softrams/automation-toolset for more.

Softrams Automation Toolset

In a follow up post, I will share more details on the framework and step by step instructions to get started and how all team members can contribute to building great experiences.

We are honored to have these awards

Tech Industry
Disruptive Tech Fast 50 Award
Inc 5000 Award
75 WD