Documentation

Looking for something in particular?

Integrating GitHub Actions CI to Run Automation CI Task

Introduction to GitHub Actions CI

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

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

Actions can execute workflows like continuous integration and test case execution on any environment (Hosted Linux environments, windows environments, containers, macros).

Prerequisites to Run a Automation CI Task in GitHub Actions 

  • Configure the build.xml file.
  • Create a GitHub repository.

Create a ProvarHome Folder

  • provar.home: the path of the ProvarHome folder

Configure the build.xml File

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

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

In the example below, we store 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 on GitHub 

The steps for creating a GitHub project are given below:

Step 1: Log in to your GitHub account.

Step 2: Select an existing repository or create one 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 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 Automation 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 defined the event as any Push to the repository. Please refer to Events to learn about 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 the Firefox browser.

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

To execute test cases headlessly, we also need to install xvfb.

Reports and Artifacts

To get the reports folder as artifacts in GitHub, 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 to 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 periodically without the user manually triggering the job. Using the cron syntax to organize the events, you can achieve the same.

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 on UTC, so you might have to do some time zone conversion.

Manual Events

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

on: 
  Workflow_dispatch:

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


Feedback

Was this article helpful for you?
Documentation library

Trying to raise a case with our support team?

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