Skip to content

Commit

Permalink
optimized report portal code to remove additional config
Browse files Browse the repository at this point in the history
  • Loading branch information
sadabnepal committed Apr 25, 2024
1 parent 25a099d commit 69b3a59
Show file tree
Hide file tree
Showing 10 changed files with 82 additions and 95 deletions.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
REPORT_PORTAL_SWITCH=ON # options: ON | OFF
REPORT_PORTAL_KEY=
REPORT_PORTAL_PROJECT=
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# WebdriverIO TypeScript Mocha Framework

This is a sample project that uses WebdriverIO and TypeScript. It includes examples of the PageObject pattern and some practical examples for using WebdriverIO for cross browser and parallel testing.
This is a sample project that uses WebdriverIO and TypeScript. It includes examples of the PageObject pattern and some practical examples for using WebdriverIO for cross browser and parallel run. testing inside container, report portal integration.

### Requirements

Expand Down Expand Up @@ -29,7 +29,6 @@ npm run test [ test in chrome ]
npm run test:edge [ test in edge ]
npm run cross:browser [ test in chrome and edge ]
npm run test:docker [ test in docker container ]
npm run test:rp [ test for report portal ]
```

Docker Run:
Expand Down Expand Up @@ -74,6 +73,7 @@ npm run cleanup
- Paste your API key into `.env` file as `REPORT_PORTAL_KEY=<your api key>`
- Enter `REPORT_PORTAL_PROJECT=<project_assignment>` into `.env`. Value can be found on `PROJECT ASSIGNMENT` tab of user profile
- Other details are updated in `tests/config/wdio.reportPortal.ts` file
- add `REPORT_PORTAL_SWITCH=ON` to push results to report portal

![docker_run](./images/reportPortal.png)

Expand All @@ -90,12 +90,19 @@ npm run cleanup
```ini
├───.github
├───.vscode
├───.images
├───tests
| ├───config
| ├───docker
| ├───pages
| ├───resources
| ├───specs
| ├───static
| └───types
├───.env
├───.env.example
├───.gitignore
├───docker-compose.yml
├───package-lock.json
├───package.json
├───README.md
Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"test:edge": "wdio tests/config/wdio.conf.edge.ts",
"cross:browser": "wdio tests/config/wdio.conf.cross-browser.ts",
"smoke": "wdio tests/config/wdio.conf.ts --suite smoke --mochaOpts.grep TC_001",
"test:rp": "wdio tests/config/wdio.conf.rp.ts",
"move": "cp -r ./allure-report/history ./allure-results",
"report": "allure generate allure-results --clean && allure open",
"report:html": "allure generate --single-file allure-results --clean",
Expand Down
50 changes: 50 additions & 0 deletions tests/config/reportOptions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { config } from 'dotenv';
import { ReporterOptions } from '../types/webelements';
const { Reporter } = require('@reportportal/agent-js-webdriverio');
config();

const allureOptions = (caps: any) => {
return {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableMochaHooks: true,
reportedEnvironmentVars: {
browserCapabilities: JSON.stringify(caps, null, 4)
}
};
};

const reportPortalOptions = {
apiKey: process.env.REPORT_PORTAL_KEY,
endpoint: 'http://localhost:8080/api/v2',
project: process.env.REPORT_PORTAL_PROJECT,
launch: 'WebdriverIO-Mocha-Web-App',
description: 'Testing wdio mocha integration',
attachPicturesToLogs: true,
reportSeleniumCommands: true,
seleniumCommandsLogLevel: 'debug',
attributes: [
{
key: 'test type',
value: 'Smoke',
},
{
value: 'integration',
}
]
};

export const reportOptions = (caps: any): ReporterOptions => {
if (process.env.REPORT_PORTAL_SWITCH === "ON") {
return [
'spec',
['allure', allureOptions(caps)],
[Reporter, reportPortalOptions]
]
} else {
return [
'spec',
['allure', allureOptions(caps)],
]
}
};
21 changes: 5 additions & 16 deletions tests/config/wdio.conf.cross-browser.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,10 @@
import type { Options } from '@wdio/types'
import { multipleBrowserCapabilities } from './capabilities'
import { config as mainConfig } from './wdio.conf'
import type { Options } from '@wdio/types';
import { multipleBrowserCapabilities } from './capabilities';
import { reportOptions } from './reportOptions';
import { config as mainConfig } from './wdio.conf';

export const config: Options.Testrunner = {
...mainConfig,
capabilities: multipleBrowserCapabilities,
reporters: [
'spec',
[
'allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableMochaHooks: true,
reportedEnvironmentVars: {
browserCapabilities: JSON.stringify(multipleBrowserCapabilities, null, 4)
}
}
]
]
reporters: reportOptions(multipleBrowserCapabilities)
}
21 changes: 5 additions & 16 deletions tests/config/wdio.conf.docker.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { Options } from '@wdio/types'
import { multipleBrowserCapabilities } from './capabilities'
import { config as mainConfig } from './wdio.conf'
import type { Options } from '@wdio/types';
import { multipleBrowserCapabilities } from './capabilities';
import { reportOptions } from './reportOptions';
import { config as mainConfig } from './wdio.conf';

export const config: Options.Testrunner = {
...mainConfig,
Expand All @@ -10,17 +11,5 @@ export const config: Options.Testrunner = {
maxInstances: 5,
capabilities: multipleBrowserCapabilities,
services: ['docker'],
reporters: [
'spec',
[
'allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableMochaHooks: true,
reportedEnvironmentVars: {
browserCapabilities: JSON.stringify(multipleBrowserCapabilities, null, 4)
}
}
]
]
reporters: reportOptions(multipleBrowserCapabilities)
}
18 changes: 5 additions & 13 deletions tests/config/wdio.conf.edge.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
import type { Options } from '@wdio/types'
import { msEdgeCapabilities } from './capabilities'
import { config as mainConfig } from './wdio.conf'
import type { Options } from '@wdio/types';
import { msEdgeCapabilities } from './capabilities';
import { reportOptions } from './reportOptions';
import { config as mainConfig } from './wdio.conf';

export const config: Options.Testrunner = {
...mainConfig,
capabilities: msEdgeCapabilities,
reporters: ['spec',
['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableMochaHooks: true,
reportedEnvironmentVars: {
browserCapabilities: JSON.stringify(msEdgeCapabilities[0], null, 4)
}
}]
]
reporters: reportOptions(msEdgeCapabilities)
}
35 changes: 0 additions & 35 deletions tests/config/wdio.conf.rp.ts

This file was deleted.

14 changes: 3 additions & 11 deletions tests/config/wdio.conf.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { Options } from '@wdio/types';
import { chromeCapabilities } from './capabilities';
import { reportOptions } from './reportOptions';

export const config: Options.Testrunner = {
// ====================
Expand Down Expand Up @@ -34,7 +35,7 @@ export const config: Options.Testrunner = {
// Test Configurations
// ===================
// Level of logging verbosity: trace | debug | info | warn | error | silent
logLevel: 'warn',
logLevel: 'info',
bail: 0,
baseUrl: 'https://localhost',
waitforTimeout: 5000,
Expand All @@ -45,16 +46,7 @@ export const config: Options.Testrunner = {
specFileRetries: 0,
specFileRetriesDelay: 0,
specFileRetriesDeferred: false,
reporters: ['spec',
['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: true,
disableMochaHooks: true,
reportedEnvironmentVars: {
browserCapabilities: JSON.stringify(chromeCapabilities[0], null, 4)
}
}]
],
reporters: reportOptions(chromeCapabilities),
mochaOpts: {
ui: 'bdd',
timeout: 60000
Expand Down
5 changes: 4 additions & 1 deletion tests/types/webelements.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import type { ChainablePromiseArray, ChainablePromiseElement, ElementArray } from 'webdriverio';
import type { ReporterEntry } from '../../node_modules/@wdio/types/build/Reporters.js';

export type WebdriverIOElement = ChainablePromiseElement<WebdriverIO.Element>;
export type WebdriverIOElements = ChainablePromiseArray<ElementArray>;
export type WebdriverIOElements = ChainablePromiseArray<ElementArray>;
export type ReporterOptions = ReporterEntry[];

0 comments on commit 69b3a59

Please sign in to comment.