Running a Provar CI task in GitHub Actions

Introduction

To efficiently manage your test cases and runs, you can execute test cases and GitHub Actions enables you to create custom software development lifecycle workflows directly in your GitHub repository. With the help of Actions-based workflows you can increase automation and aid continuous delivery efforts.

With Actions, you can create events that are triggered by the configuration in your workflow like merging a pull request, pushing a commit, or creating a new issue can act as events, signaling other processes to occur.

Actions  is a way to execute workflows like continuous integration and test case execution on any environment (Hosted linux environments, windows environments, containers, macros).

Prerequisites

  • Configure build.xml file 
  • Create a GitHub repository

Create a ProvarHome Folder

  • provar.home: path of the ProvarHome folder

Configure the build.xml file

Edit the information in the build.xml file as given below:

  • testproject.home: path of the Provar project root in your repository
  • testproject.results: path of  the Provar Results directory in your repository
  • license.path: path where .licenses folder is located

In the example given below, we are storing the build.xml file in the Project Directory/ANT folder.

<project default="runtests">
    <property environment="env"/>
    <property name="provar.home" value="${env.PROVAR_HOME}"/>
    <property name="testproject.home" value=".."/>
    <property name="testproject.results" value="../ANT/Results"/>
 
    <taskdef name="Provar-Compile" classname="com.provar.testrunner.ant.CompileTask" classpath="${provar.home}/ant/ant-provar.jar"/>
    <taskdef name="Run-Test-Case" classname="com.provar.testrunner.ant.RunnerTask" classpath="${provar.home}/ant/ant-provar.jar;${provar.home}/ant/ant-provar-bundled.jar;${provar.home}/ant/ant-provar-sf.jar"/>
    <taskdef name="Test-Cycle-Report" classname="com.provar.testrunner.ant.TestCycleReportTask" classpath="${provar.home}/ant/ant-provar.jar;${provar.home}/ant/ant-provar-bundled.jar;${provar.home}/ant/ant-provar-sf.jar"/>
    
    <target name="runtests">
    
        <Provar-Compile provarHome="${provar.home}" projectPath="${testproject.home}"/>
    
        <Run-Test-Case provarHome="${provar.home}" 
                projectPath="${testproject.home}" 
                resultsPath="${testproject.results}" 
                resultsPathDisposition="Increment" 
                testEnvironment="" 
                webBrowser="Chrome" 
                webBrowserConfiguration="Full Screen"
                webBrowserProviderName="Desktop"
                webBrowserDeviceName="Full Screen" 
                excludeCallableTestCases="true" 
                salesforceMetadataCache="Reuse" 
                projectCachePath="../../.provarCaches"
                testOutputlevel="WARNING" 
                pluginOutputlevel="WARNING"
                stopTestRunOnError="false"
                invokeTestRunMonitor="true"
                >
            <fileset id="testcases" dir="../tests"></fileset>
        </Run-Test-Case>
    </target>
</project>

Create a project in GitHub 

The steps for creating a GitHub project are given below:

Step 1: Login to your GitHub account.

Step 2: Select an existing repository or create a new repository and enter the Repository name. Select the visibility level as Private.

Step 3: Push the project configured above to the repository.

Configure the workflow

Step 1: On the Actions tab, click on the New workflow button.

Step 2: Click on Set up this workflow. A custom yml file is opened which can be configured as per the requirement. Click on Start Commit to push the changes to your repository.

Here is an example configured for Provar execution:

<Code starts>

# This is a basic workflow to help you get started with Actions
 
name: CI
 
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches: [ master ]
 
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
   
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest
        env:
        PROVAR_HOME: ${{ github.workspace }}/ProvarHome
 
    
    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
   - uses: actions/checkout@v2
   - uses: actions/setup-java@v1
    with:
      java-version: 1.8
 
    - name: Run build
      run: |
 
        mkdir $GITHUB_WORKSPACE/ProvarHome
        curl -O https://download.provartesting.com/latest/Provar_ANT_latest.zip
        unzip -o Provar_ANT_latest.zip -d ProvarHome
        rm Provar_ANT_latest.zip
        sudo apt-get update && sudo apt-get upgrade       
        wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -        
        sudo echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >>sudo tee -a /etc/apt/sources.list.d/google-chrome.list
        sudo apt-get -y install google-chrome-stable
        sudo add-apt-repository ppa:mozillateam/firefox-next && sudo apt install firefox
        echo $PROVAR_HOME
        cd $GITHUB_WORKSPACE/test/ANT
        xvfb-run ant -f build.xml
 
    - uses: actions/upload-artifact@v2
      with:
        name: Execution Report
        path:${{ github.workspace }}/test/ANT/Results/*
    - uses: actions/upload-artifact@v2
      if: failure()
      with:
        name: Execution Report                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
        path:${{ github.workspace }}/test/ANT/Results/*

Let’s have a code walkthrough of the example in the script above:

Firstly, we need to define the event that will trigger the execution.

Here, we have defined the event to be any Push to the repository. Please refer to Events to know about different events that can trigger the workflow.

We need to mention the base docker image. Here, it is the GitHub hosted ubuntu server. As we need to execute our UI test cases on a browser, that is why the chrome installation is included.

Below is the sample code to install Firefox browser.

sudo add-apt-repository ppa:mozillateam/firefox-next
sudo apt update && sudo apt upgrade
sudo apt install firefox

To execute test cases in a headless manner, we also need to install xvfb.

Reports and Artifacts

To get reports folder as artifacts in GitHub, just add the code below in a yml file.

- uses: actions/upload-artifact@v2
     with:
       name: Execution Report
        path:${{ github.workspace }}/test/ANT/Results/*

Conditional Artifact Upload: To upload artifacts only when the previous step of a job has failed, use

if:failure()::
 
    - uses: actions/upload-artifact@v2
      if: failure()
      with:
        name: Execution Report
        path:${{ github.workspace }}/test/ANT/Results/*

Click Actions > Workflow Name and you can see all the workflows run. 

Click on the workflow run and you can see artifacts uploaded.

You can see all the logs related to the workflow run.

Scheduled Events

You can schedule the events to run periodically without the user manually triggering the job. You can also achieve the same using the cron syntax to schedule the events.

name: Do things every 5 minutes
:
on
 schedule:
   - cron: "*/5 * * * *"

This says to run the workflow every five minutes. Cron syntax is separated into five pieces.

┌───────────── minute (0 - 59)

│ ┌───────────── hour (0 - 23)

│ │ ┌───────────── day of the month (1 - 31)

│ │ │ ┌───────────── month (1 - 12)

│ │ │ │ ┌───────────── day of the week (0 - 6)

│ │ │ │ │                                   

│ │ │ │ │

│ │ │ │ │

* * * * *

An asterisk (*) means that the field is considered “any time” - so * * * * * means every minute of every day. 

Note: On GitHub, time is based in UTC so you might have to do some time zone conversion.

Manual Events

You can also trigger the workflows manually by using workflow_dispatch event.

on: 
  Workflow_dispatch:

To trigger the workflow_dispatch event on GitHub, click the workflow that you want to run under Actions tab and select Run workflow.

Review Provar on G2
Documentation library

Other available resources

Looking for something different?

We use cookies to better understand how our website is used so we can tailor content for you. For more information about the different cookies we use please take a look at our Privacy Policy.

Scroll to Top