UNPKG

@dbouckaert/zephyr-scale-reporter

Version:

ZH, or zephyr helpers is a Node JS framework that implements test suites with Zephyr scale for Jira. It uses a soft-assert function to absorb failing assertions and translate them to a true/false value.

105 lines (78 loc) 4.17 kB
## What is ZH? ZH, or zephyr helpers is a Node JS framework that implements test suites with [Zephyr scale](https://marketplace.atlassian.com/apps/1213259/zephyr-scale-test-management-for-jira?tab=overview&hosting=cloud) for Jira. It uses a soft-assert function to absorb failing assertions and translate them to a true/false value. ## Installing [![npm version](https://badge.fury.io/js/@dbouckaert%2Fzh.svg)](https://badge.fury.io/js/@dbouckaert%2Fzh) Install ZH for Mac, Linux, or Windows ```bash npm install @dbouckaert/zh --save-dev ``` ## License [![license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/cypress-io/cypress/blob/master/LICENSE) This project is licensed under the terms of the [MIT license](/LICENSE). ## Getting started Include the module into your test suite. `const zh = require('@dbouckaert/zh')` ### Initiation The first thing you'll want to do is to call the function `setVars()` It populates the framework with critical information. One option is to do this inside of the `before` block. Secondly use the function `getAllTestCases()` to create an array with all the existing test cases in your Zephyr project - and store the result in an array. ```js before(async function () { // FIRST: setting variables for zephyrHelpers (without the project ID) await zephyrHelpers.init({ zephyrURL: 'https://<url.to.your.jira.env>', zephyrUser: credentials.zephyrUser, zephyrPass: credentials.zephyrPassword, jiraUser: 'me@company.org', zephyrProjectName: projectName, zephyrFolderName: folderName, environment: process.env.ENV, defaultJiraId: 'JIRAUSER123', }); // SECOND: filter all testcases, looking for a match based on our project ID testcaseArray = await zephyrHelpers.getAllTestcases(); }); ``` _Note: don't store clear text passwords in your repository._ ### Example use case Explenation: There are 2 variables defined to store the result of the GET call: `payloadResult` & `responseCodeResult`. A varable `testName` is created that holds the exact name of the test case in Zephyr Scale. Another variable `testrunId` is being created, it's value is set by calling the function `createNewTestrun`, 2 parameters are passed (as an object): - testcaseArray: the test case array (from our before block) - name: the test case name Then the REST call is executed, and afterwards (.then) the value of `payloadResult` & `responseCodeResult` are being set. Using the `softAssert` method: - `responseCodeResult` `softAssert.equals()` is comparing if two parameters are an exact match and returns `true` or `false`. - `payloadResult` `softAssert.includes()` is checking if the value of parameter 'B' is included in parameter 'A' and returns `true` or `false`. Next up: calling the `updateTestResult()` function. This sends the result over to Zephyr Scale, making it visible in the test case (tab executions). Finally: calling the `softAssert.assertAll()` function. This function checks if any error were absorbed during the soft-asserts. If there are, the errors are logged in the console, and the test runner will mark the test as failed. _**Note: your CI system will also mark the job/run as failed**_ ```js it('Call /users without authorisation header', async function () { let payloadResult, responseCodeResult; const testName = 'GET /users without authorisation header (Sad flow)'; const testrunId = await zephyrHelpers.createNewTestrun({ testcaseArray: testcaseArray, name: testName, }); await request(baseURL) .get( `/users?id=${getUser.id}&userIdentification=${getUser.userIdentification}&username=${getUser.username}` ) .then((res) => { responseCodeResult = zephyrHelpers.softAssert.equals(res.statusCode, 401); payloadResult = zephyrHelpers.softAssert.includes( res.body.error, 'Unauthorized' ); }); zephyrHelpers.updateTestResult({ testRunId: testrunId, testStatus: payloadResult && responseCodeResult, }); await zephyrHelpers.softAssert.assertAll(); }); ```