@auxcode/auxta 0.3.7 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auxcode/auxta",
3
- "version": "0.3.7",
3
+ "version": "0.4.1",
4
4
  "description": "",
5
5
  "main": "src/AuxTA.ts",
6
6
  "scripts": {
@@ -43,11 +43,7 @@ export async function onTestEnd(body: any, featureName: string, scenarioName: st
43
43
  }
44
44
  }
45
45
  if (isFinal) await afterComplete(body);
46
- else if (body && body.nextSuites && body.nextSuites[0])
47
- try {
48
- await startSuite(body.nextSuites, body.reportId);
49
- } catch {
50
- }
46
+ else if (body && body.nextSuites) await startSuite(body.nextSuites, body.reportId);
51
47
  }
52
48
 
53
49
  export async function afterComplete(body: UploadModel) {
@@ -1,11 +1,16 @@
1
1
  import axios from 'axios';
2
2
  import { config } from "../configs/config";
3
3
 
4
- export function startSuite(suites: string[], reportId?: string) {
5
- console.log('Starting next suite: ' + suites[0]);
6
- //todo on error, end the test
7
- return axios.post(
8
- `${config.netlifyPath}.netlify/functions/${suites.shift()}?token=${config.token}`,
9
- { nextSuites: suites, reportId: reportId}
10
- );
4
+ export async function startSuite(suites: string[], reportId?: string) {
5
+ if (suites.length === 0) return;
6
+ const next = suites.shift();
7
+ console.log('Starting next suite: ' + next);
8
+ try{
9
+ await axios.post(
10
+ `${config.netlifyPath}.netlify/functions/${next}?token=${config.token}`,
11
+ {nextSuites: suites, reportId: reportId})
12
+ } catch (e){
13
+ // skip the suite if not found
14
+ await startSuite(suites, reportId);
15
+ }
11
16
  }
@@ -19,10 +19,10 @@ export class FunctionHelper {
19
19
  return `concat('${splitedQuotes}', '')`;
20
20
  }
21
21
 
22
- public async clickByText(selector: string, text: string, page = puppeteer.defaultPage) {
22
+ public async clickByText(selector: string, text: string, page = puppeteer.defaultPage, dotOrText = '.') {
23
23
  const message = `I click on the '${text}' '${selector}'`;
24
24
  try{
25
- const [linkHandlers] = await page.$x(`//${selector}[text() = ${this.getEscapedText(text)}]`);
25
+ const [linkHandlers] = await page.$x(`//${selector}[${dotOrText} = ${this.getEscapedText(text)}]`);
26
26
 
27
27
  if (linkHandlers) {
28
28
  await linkHandlers.click();
@@ -35,13 +35,13 @@ export class FunctionHelper {
35
35
  throw new Error(message);
36
36
  }
37
37
 
38
- public async waitForSelectorWithText(selector: string, text: string, page = puppeteer.defaultPage) {
38
+ public async waitForSelectorWithText(selector: string, text: string, page = puppeteer.defaultPage, dotOrText = '.') {
39
39
  const message = `I check for '${text}' on the current page`;
40
40
  try{
41
41
  await page.waitForSelector(selector, {
42
42
  timeout: this.defaultTimeout
43
43
  });
44
- const linkHandlers = await page.$x(`//${selector}[text() = ${this.getEscapedText(text)}]`);
44
+ const linkHandlers = await page.$x(`//${selector}[${dotOrText} = ${this.getEscapedText(text)}]`);
45
45
  if (linkHandlers.length > 0) {
46
46
  log.push('And', message, StatusOfStep.PASSED);
47
47
  return true;
@@ -48,42 +48,47 @@ export class Puppeteer {
48
48
  }
49
49
 
50
50
  public async run(event: any, callback: any, featureName = 'Test feature', scenarioName = 'Test scenario', uploadModel?: UploadModel, close?: boolean) {
51
- if (uploadModel === undefined) uploadModel = auxta.getUploadModel();
52
- if (close === undefined) close = Puppeteer.setupHeader(event, uploadModel)
53
- let screenshotBuffer: Buffer | undefined;
54
- let errMessage: any;
55
- let statusCode: number = 200;
51
+ try{
52
+ if (uploadModel === undefined) uploadModel = auxta.getUploadModel();
53
+ if (close === undefined) close = Puppeteer.setupHeader(event, uploadModel)
54
+ let screenshotBuffer: Buffer | undefined;
55
+ let errMessage: any;
56
+ let statusCode: number = 200;
56
57
 
57
- let consoleStack: any[] = [];
58
- try {
59
- await log.push('When', `Starting puppeteer process`, StatusOfStep.PASSED);
60
- await this.startBrowser()
61
- this.defaultPage.on('console', message =>
62
- consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
63
- .on('pageerror', ({message}) => consoleStack.push(message))
64
- .on('response', response =>
65
- consoleStack.push(`${response.status()} ${response.url()}`))
66
- .on('requestfailed', request =>
67
- consoleStack.push(`${request.failure().errorText} ${request.url()}`))
68
- await callback(event)
69
- log.push('When', `Finished puppeteer process`, StatusOfStep.PASSED);
70
- } catch (err) {
71
- console.log(`Error ${err}`);
72
- errMessage = err;
73
- statusCode = 500;
74
- screenshotBuffer = await captureScreenshot();
75
- log.push('When', `Finished puppeteer process`, StatusOfStep.FAILED);
76
- await postNotificationsOnFail(uploadModel)
77
- }
78
- let url = this.defaultPage.url();
79
- if (close) await this.close();
58
+ let consoleStack: any[] = [];
59
+ try {
60
+ await log.push('When', `Starting puppeteer process`, StatusOfStep.PASSED);
61
+ await this.startBrowser()
62
+ this.defaultPage.on('console', message =>
63
+ consoleStack.push(`${message.type().substr(0, 3).toUpperCase()} ${message.text()}`))
64
+ .on('pageerror', ({message}) => consoleStack.push(message))
65
+ .on('response', response =>
66
+ consoleStack.push(`${response.status()} ${response.url()}`))
67
+ .on('requestfailed', request =>
68
+ consoleStack.push(`${request.failure() !== null ? request.failure()?.errorText : ""} ${request.url()}`))
69
+ await callback(event)
70
+ log.push('When', `Finished puppeteer process`, StatusOfStep.PASSED);
71
+ } catch (err) {
72
+ console.log("Error", err);
73
+ errMessage = err;
74
+ statusCode = 500;
75
+ screenshotBuffer = await captureScreenshot();
76
+ log.push('When', `Finished puppeteer process`, StatusOfStep.FAILED);
77
+ await postNotificationsOnFail(uploadModel)
78
+ }
79
+ let url = this.defaultPage.url();
80
+ if (close) await this.close();
80
81
 
81
- await onTestEnd(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
82
- currentPageUrl: url,
83
- console: consoleStack,
84
- error: errMessage
85
- });
86
- log.clear();
82
+ await onTestEnd(uploadModel, featureName, scenarioName, statusCode, screenshotBuffer, !errMessage ? undefined : {
83
+ currentPageUrl: url,
84
+ console: consoleStack,
85
+ error: errMessage
86
+ });
87
+ } catch (e){
88
+ console.log("Lib error:", e);
89
+ } finally {
90
+ log.clear();
91
+ }
87
92
  }
88
93
 
89
94
  private static setupHeader(event: any, uploadModel: UploadModel) {