## Jest-Atm-Reporter-Functional:
This is a plugin for uploading test execution results in real time (during execution - per `test` block) for JEST tests to Adaptavist Test Management tool (Kanoah). 

One `describe` block is mapped to multiple ATM test (`Test case ID` for which can be set using reporter method). Each `test` block in `describe` will be considered as unique test.

## Install:
```
npm install jest-atm-reporter-functional
npm install dotenv
```

### Environment Variables:
Set following environment variables on your machine:
```
BASE_URL      = baseurl (e.g. --> jira.abcdef.com)
JIRA_USERNAME = username
JIRA_PASSWORD = password
PROJECT_KEY   = XYZ
TEST_CYCLE_ID = OPQ
```
### Note: 
In case you want to create new `TEST_CYCLE_ID` for every run then remove entry for `TEST_CYCLE_ID` from environment variable and use the npm module `GENERATE-ATM-TEST-CYCLE`(https://www.npmjs.com/package/generate-atm-test-cycle) to generate test cycle at runtime programatically.

## Usage:

Set following in package.json for using the jest-atm-reporter-functionnal:

```
"jest": {
    "setupFilesAfterEnv": [
      "./node_modules/jest-atm-reporter-functional/src/setup.js"
    ],
    "reporters": [
      "jest-atm-reporter-functional"
    ]
  },
```
### How to set value `Test case ID` and `Test Environment` from test file. Snippet from a sample JEST test below -

```
beforeAll(async () => {
        reporter.setEnvironment('<TestEnvironment>');
    });

test('test functionality', async () => {
        reporter.setTestCaseID('<TestCaseID>');
    });
```
### How to get screenshot of failure or final verification step. This screenshot will be auto uploaded to ATM TC. Snippet from a sample jest-puppeteer test below -
```
afterEach(async () => {
        let name = '<UniqueFileName.jpeg>';
        await page.screenshot({ path: name, fullPage: true});
        reporter.setScreenshotName(name);
    });
```
Note: `reporter` is global. 


### Features:
* Creates new test environment in Kanoah(ATM) in case the provided test environment is missing in ATM 

* Supports appropriate result upload for both type of JEST test execution - `Sequential` and `Parallel`

* Allows addition of metadata information - `Test Environment` and `Test case ID` per `describe` and `test` block

* Uploads test execution results to Kanoah (ATM) with following information - 
    * __Pass / Fail__ test in real time (per JEST `test` block execution)

    * Uploads the __actual time taken__ for the test to execute

    * Uploads __failure reason__ with *Fail* tests

    * Uploads __failure__ or __final verification__ screenshot with test

    * Each test result upload displays respective environment information as set using the `reporter` method - `setEnvironment` (eg. values - `<applicationName>_desktop_en` or `chrome`) 

