@qavajs/playwright-runner-adapter 1.1.0 → 1.1.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/CHANGELOG.md CHANGED
@@ -10,6 +10,9 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how
10
10
  :pencil: - chore
11
11
  :microscope: - experimental
12
12
 
13
+ ## [1.1.1]
14
+ - :beetle: fixed issue with After hooks execution in case of failed test
15
+
13
16
  ## [1.1.0]
14
17
  - :rocket: improved BeforeStep/AfterStep logging
15
18
  - :beetle: fixed BeforeAll/AfterAll behavior
@@ -13,6 +13,23 @@ function attach(body, details) {
13
13
  }
14
14
  const fixture = new supportCodeLibrary.World({});
15
15
  const test = fixture.test;
16
+ const stepHandler = test.expect.extend({
17
+ async execute(fn) {
18
+ try {
19
+ await fn();
20
+ return {
21
+ pass: true,
22
+ message: () => ''
23
+ };
24
+ }
25
+ catch (e) {
26
+ return {
27
+ pass: false,
28
+ message: () => e.message,
29
+ };
30
+ }
31
+ }
32
+ });
16
33
  for (const beforeAllHook of supportCodeLibrary.beforeTestRunHookDefinitions) {
17
34
  test.beforeAll(() => beforeAllHook.code.apply({}));
18
35
  }
@@ -29,6 +46,7 @@ for (const feature of features) {
29
46
  const tag = testCase.tags.map((tag) => tag.name);
30
47
  test(testCase.name, { tag }, async () => {
31
48
  var _a, _b;
49
+ const testInfo = test.info();
32
50
  const result = { status: 'passed' };
33
51
  for (const beforeHook of supportCodeLibrary.beforeTestCaseHookDefinitions) {
34
52
  if (beforeHook.appliesToTestCase(testCase)) {
@@ -39,6 +57,9 @@ for (const feature of features) {
39
57
  }
40
58
  }
41
59
  for (const pickleStep of testCase.steps) {
60
+ if (testInfo.error) {
61
+ break;
62
+ }
42
63
  await test.step(pickleStep.text, async () => {
43
64
  for (const beforeStep of supportCodeLibrary.beforeTestStepHookDefinitions) {
44
65
  if (beforeStep.appliesToTestCase(testCase)) {
@@ -62,13 +83,9 @@ for (const feature of features) {
62
83
  },
63
84
  world
64
85
  });
65
- try {
66
- await step.code.apply(world, parameters);
67
- }
68
- catch (err) {
69
- result.status = 'failed';
70
- result.error = err;
71
- }
86
+ await stepHandler
87
+ .soft(() => step.code.apply(world, parameters), 'Step')
88
+ .execute();
72
89
  for (const afterStep of supportCodeLibrary.afterTestStepHookDefinitions) {
73
90
  if (afterStep.appliesToTestCase(testCase)) {
74
91
  await test.step('After Step', () => afterStep.code.apply(world, [{
@@ -78,8 +95,6 @@ for (const feature of features) {
78
95
  }]));
79
96
  }
80
97
  }
81
- if (result.error)
82
- throw result.error;
83
98
  });
84
99
  }
85
100
  for (const afterHook of supportCodeLibrary.afterTestCaseHookDefinitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"cucumber.spec.js","sourceRoot":"","sources":["../src/cucumber.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cucumber.spec.js","sourceRoot":"","sources":["../src/cucumber.spec.ts"],"names":[],"mappings":";;AAAA,qCAAgC;AAEhC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAC,GAAG,IAAA,aAAI,GAAE,CAAC;AAE/C,SAAS,GAAG,CAAC,IAAS;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,MAAM,CAAsB,IAAS,EAAE,OAAY;;IACxD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,YAAY,CAAC;IAClD,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,YAAY,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,KAAK,CAAC,OAAO,CAAC,EAAsB;QAChC,IAAI,CAAC;YACD,MAAM,EAAE,EAAE,CAAC;YACX,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;aACpB,CAAA;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO;gBACH,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO;aAC3B,CAAA;QACL,CAAC;IACL,CAAC;CACJ,CAAC,CAAC;AAEH,KAAK,MAAM,aAAa,IAAI,kBAAkB,CAAC,4BAA4B,EAAE,CAAC;IAC1E,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAiB,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC;YACvC,GAAG;YACH,MAAM;YACN,kBAAkB;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,GAAG,EAAC,EAAE,KAAK,IAAI,EAAE;;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAoC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACrE,KAAK,MAAM,UAAU,IAAI,kBAAkB,CAAC,6BAA6B,EAAE,CAAC;oBACxE,IAAI,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzC,MAAM,QAAQ,GAAG,MAAA,UAAU,CAAC,IAAI,mCAAI,QAAQ,CAAC;wBAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gCAC1D,MAAM,EAAE,QAAQ;6BACnB,CAAC,CAAC,CAAC,CAAC;oBACT,CAAC;gBACL,CAAC;gBACD,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACtC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBACjB,MAAM;oBACV,CAAC;oBACD,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;wBACxC,KAAK,MAAM,UAAU,IAAI,kBAAkB,CAAC,6BAA6B,EAAE,CAAC;4BACxE,IAAI,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACzC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wCAC/D,MAAM,EAAE,QAAQ;wCAChB,UAAU;qCACb,CAAC,CAAC,CAAC,CAAC;4BACT,CAAC;wBACL,CAAC;wBACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,eAAe;6BAC3C,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC/E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,SAAS,UAAU,CAAC,IAAI,kBAAkB,CAAC,CAAC;wBACpF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;4BAAE,MAAM,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,qCAAqC,CAAC,CAAC;wBAChG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBACrB,MAAM,EAAC,UAAU,EAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC;4BACpD,IAAI,EAAE;gCACF,IAAI,EAAE,UAAU,CAAC,IAAI;gCACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;6BAChC;4BACD,KAAK;yBACD,CAAC,CAAC;wBACV,MAAM,WAAW;6BACZ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;6BACtD,OAAO,EAAE,CAAC;wBACf,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,4BAA4B,EAAE,CAAC;4BACtE,IAAI,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACxC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wCAC7D,MAAM,EAAE,QAAQ;wCAChB,UAAU;wCACV,MAAM;qCACT,CAAC,CAAC,CAAC,CAAC;4BACT,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,KAAK,MAAM,SAAS,IAAI,kBAAkB,CAAC,4BAA4B,EAAE,CAAC;oBACtE,IAAI,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxC,MAAM,QAAQ,GAAG,MAAA,SAAS,CAAC,IAAI,mCAAI,OAAO,CAAC;wBAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gCACzD,MAAM,EAAE,QAAQ,EAAE,MAAM;6BAC3B,CAAC,CAAC,CAAC,CAAC;oBACT,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAA;QACN,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,MAAM,YAAY,IAAI,kBAAkB,CAAC,2BAA2B,EAAE,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qavajs/playwright-runner-adapter",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "adapter for playwright test runner",
5
5
  "scripts": {
6
6
  "build": "tsc",
@@ -11,12 +11,12 @@
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@cucumber/gherkin": "^30.0.4",
14
- "glob": "^11.0.0"
14
+ "glob": "^11.0.1"
15
15
  },
16
16
  "devDependencies": {
17
- "@cucumber/cucumber": "^11.1.1",
17
+ "@cucumber/cucumber": "^11.2.0",
18
18
  "@playwright/test": "^1.49.1",
19
- "@types/node": "^22.10.5",
20
- "typescript": "^5.7.2"
19
+ "@types/node": "^22.10.6",
20
+ "typescript": "^5.7.3"
21
21
  }
22
22
  }
@@ -1,6 +1,6 @@
1
1
  import { load } from './loader';
2
2
 
3
- const { features, supportCodeLibrary } = load();
3
+ const { features, supportCodeLibrary} = load();
4
4
 
5
5
  function log(data: any) {
6
6
  console.log(data);
@@ -9,12 +9,29 @@ function log(data: any) {
9
9
  function attach(this: { test: any }, body: any, details: any) {
10
10
  const fileName = details.fileName ?? 'attachment';
11
11
  const contentType = details.mediaType ?? 'text/plain';
12
- this.test.info().attach(fileName, { body, contentType });
12
+ this.test.info().attach(fileName, {body, contentType});
13
13
  }
14
14
 
15
15
  const fixture = new supportCodeLibrary.World({});
16
16
  const test = fixture.test;
17
17
 
18
+ const stepHandler = test.expect.extend({
19
+ async execute(fn: () => Promise<any>) {
20
+ try {
21
+ await fn();
22
+ return {
23
+ pass: true,
24
+ message: () => ''
25
+ }
26
+ } catch (e: any) {
27
+ return {
28
+ pass: false,
29
+ message: () => e.message,
30
+ }
31
+ }
32
+ }
33
+ });
34
+
18
35
  for (const beforeAllHook of supportCodeLibrary.beforeTestRunHookDefinitions) {
19
36
  test.beforeAll(() => beforeAllHook.code.apply({}));
20
37
  }
@@ -32,7 +49,8 @@ for (const feature of features) {
32
49
 
33
50
  for (const testCase of tests) {
34
51
  const tag = testCase.tags.map((tag: { name: string }) => tag.name);
35
- test(testCase.name, { tag }, async () => {
52
+ test(testCase.name, {tag}, async () => {
53
+ const testInfo = test.info();
36
54
  const result: { status: string, error?: any } = { status: 'passed' };
37
55
  for (const beforeHook of supportCodeLibrary.beforeTestCaseHookDefinitions) {
38
56
  if (beforeHook.appliesToTestCase(testCase)) {
@@ -43,6 +61,9 @@ for (const feature of features) {
43
61
  }
44
62
  }
45
63
  for (const pickleStep of testCase.steps) {
64
+ if (testInfo.error) {
65
+ break;
66
+ }
46
67
  await test.step(pickleStep.text, async () => {
47
68
  for (const beforeStep of supportCodeLibrary.beforeTestStepHookDefinitions) {
48
69
  if (beforeStep.appliesToTestCase(testCase)) {
@@ -56,20 +77,17 @@ for (const feature of features) {
56
77
  .filter(stepDefinition => stepDefinition.matchesStepName(pickleStep.text));
57
78
  if (steps.length === 0) throw new Error(`Step '${pickleStep.text}' is not defined`);
58
79
  if (steps.length > 1) throw new Error(`'${pickleStep.text}' matches multiple step definitions`);
59
- const [ step ] = steps;
60
- const { parameters} = await step.getInvocationParameters({
80
+ const [step] = steps;
81
+ const {parameters} = await step.getInvocationParameters({
61
82
  step: {
62
83
  text: pickleStep.text,
63
84
  argument: pickleStep.argument
64
85
  },
65
86
  world
66
87
  } as any);
67
- try {
68
- await step.code.apply(world, parameters);
69
- } catch (err) {
70
- result.status = 'failed';
71
- result.error = err;
72
- }
88
+ await stepHandler
89
+ .soft(() => step.code.apply(world, parameters), 'Step')
90
+ .execute();
73
91
  for (const afterStep of supportCodeLibrary.afterTestStepHookDefinitions) {
74
92
  if (afterStep.appliesToTestCase(testCase)) {
75
93
  await test.step('After Step', () => afterStep.code.apply(world, [{
@@ -79,7 +97,6 @@ for (const feature of features) {
79
97
  }]));
80
98
  }
81
99
  }
82
- if (result.error) throw result.error;
83
100
  });
84
101
  }
85
102
  for (const afterHook of supportCodeLibrary.afterTestCaseHookDefinitions) {