Integrating GitHub Actions CI to Run Provar CI Task
Introduction to GitHub Actions CI
You can execute test cases to manage your Provar 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 Provar 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 Provar project root in your repository
- testproject.results: the path of the Provar 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 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/[email protected] - uses: actions/[email protected] 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/[email protected] with: name: Execution Report path:${{ github.workspace }}/test/ANT/Results/* - uses: actions/[email protected] 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/[email protected] 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/[email protected] 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.
- General information
- Licensing Provar
- Provar trial guide and extensions
- Using Provar
- API testing
- Behavior-driven development
- Creating and importing projects
- Creating test cases
- Custom table mapping
- Functions
- Debugging tests
- Defining a namespace prefix on a connection
- Defining proxy settings
- Environment management
- Exporting test cases into a PDF
- Exporting test projects
- Override auto-retry for Test Step
- Managing test steps
- Namespace org testing
- Provar desktop
- Provar Test Builder
- Refresh and Recompile
- Reload Org Cache
- Reporting
- Running tests
- Searching Provar with find usages
- Secrets management and encryption
- Setup and teardown test cases
- Tags and Service Level Agreements (SLAs)
- Test cycles
- Test plans
- Testing browser options
- Tooltip testing
- Using the Test Palette
- Using custom APIs
- Callable tests
- Data-driven testing
- Page objects
- Block locator strategies
- Introduction to XPaths
- Creating an XPath
- JavaScript locator support
- Label locator strategies
- Maintaining page objects
- Mapping non-Salesforce fields
- Page object operations
- ProvarX™
- Refresh and reselect field locators in Test Builder
- Using Java method annotations for custom objects
- Applications testing
- DevOps
- Introduction to test scheduling
- Apache Ant
- Configuration for Sending Emails via the Provar Command Line Interface
- Continuous integration
- AutoRABIT Salesforce DevOps in Provar Test
- Azure DevOps
- Running a Provar CI Task in Azure DevOps Pipelines
- Configuring the Provar secrets password in Microsoft Azure Pipelines
- Parallel Execution in Microsoft Azure Pipelines Using Multiple build.xml Files
- Parallel Execution in Microsoft Azure Pipelines using Targets
- Parallel execution in Microsoft Azure Pipelines using Test Plans
- Bitbucket Pipelines
- CircleCI
- Copado
- Docker
- Flosum
- Gearset DevOps CI/CD
- GitHub Actions
- Integrating GitHub Actions CI to Run Provar CI Task
- Remote Trigger in GitHub Actions
- Parameterization using Environment Variables in GitHub Actions
- Parallel Execution in GitHub Actions using Multiple build.xml Files
- Parallel Execution in GitHub Actions using Targets
- Parallel Execution in GitHub Actions using Test Plan
- Parallel Execution in GitHub Actions using Job Matrix
- GitLab Continuous Integration
- Travis CI
- Jenkins
- Execution Environment Security Configuration
- Provar Jenkins Plugin
- Parallel Execution
- Running Provar on Linux
- Reporting
- Salesforce DX
- Git
- Team foundation server
- Version control
- Salesforce testing
- Adding a Salesforce connection
- Assert Page Error Messages on Add/Edit Product
- Dynamic Forms
- Internationalization support
- List and table testing
- Salesforce Release Updates
- Salesforce Lightning Testing
- Salesforce Lightning Web Component (LWC) locator support
- Salesforce console testing
- Visualforce Testing
- Performance Best Practices
- Testing best practices
- Troubleshooting
- Browsers
- Configurations and permissions
- Connections
- DevOps
- Error messages
- Administrator has blocked access to client
- JavascriptException: Javascript error
- macOS Big Sur Upgrade
- Resolving failed to create ChromeDriver error
- Resolving Jenkins license missing error
- Resolving metadata timeout errors
- Test execution fails – Firefox not installed
- Update to Opportunity field validation behaviour
- Licensing, installation and firewalls
- Memory
- Test Builder and test cases
- Release notes