@drownek/paper-e2e-runner 1.0.3 → 1.0.5

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.
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utilities for capturing and parsing V8 stack traces.
3
+ *
4
+ * Two concerns live here:
5
+ * 1. Capturing a call-site stack string at a known point (e.g. inside expect()),
6
+ * so that assertion errors can point back to the test file rather than runner internals.
7
+ * 2. Parsing a raw stack string to extract the first frame that references a given test file,
8
+ * returning its line and column numbers.
9
+ */
10
+ export interface StackLocation {
11
+ line: number;
12
+ column: number;
13
+ }
14
+ /**
15
+ * Capture the current call-site stack trace as a string.
16
+ *
17
+ * @param constructorOpt - When provided, all frames at and above this function
18
+ * are stripped from the trace (standard V8 `captureStackTrace` behavior).
19
+ * Pass the constructor of the class whose instantiation you want to hide.
20
+ */
21
+ export declare function captureCallSite(constructorOpt?: Function): string;
22
+ /**
23
+ * Walk a V8 stack string and return the location of the first frame that
24
+ * references `testFile`.
25
+ *
26
+ * Handles both URL-style frames (`file:///C:/…:line:col`) and plain path
27
+ * frames (`at Something (C:/…:line:col)`). The `testFile` value is
28
+ * normalized from a compiled `dist/*.spec.js` path back to the original
29
+ * `*.spec.ts` source path before matching, so source-mapped stacks resolve
30
+ * correctly.
31
+ *
32
+ * @returns The `{line, column}` of the matching frame, or `null` if no frame
33
+ * references the given test file.
34
+ */
35
+ export declare function extractLineNumberFromStack(stack: string | undefined, testFile: string): StackLocation | null;
36
+ //# sourceMappingURL=stack-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-trace.d.ts","sourceRoot":"","sources":["../../lib/stack-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,CAMjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoB5G"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Utilities for capturing and parsing V8 stack traces.
3
+ *
4
+ * Two concerns live here:
5
+ * 1. Capturing a call-site stack string at a known point (e.g. inside expect()),
6
+ * so that assertion errors can point back to the test file rather than runner internals.
7
+ * 2. Parsing a raw stack string to extract the first frame that references a given test file,
8
+ * returning its line and column numbers.
9
+ */
10
+ /**
11
+ * Capture the current call-site stack trace as a string.
12
+ *
13
+ * @param constructorOpt - When provided, all frames at and above this function
14
+ * are stripped from the trace (standard V8 `captureStackTrace` behavior).
15
+ * Pass the constructor of the class whose instantiation you want to hide.
16
+ */
17
+ export function captureCallSite(constructorOpt) {
18
+ const err = new Error();
19
+ if (constructorOpt) {
20
+ Error.captureStackTrace(err, constructorOpt);
21
+ }
22
+ return err.stack || '';
23
+ }
24
+ /**
25
+ * Walk a V8 stack string and return the location of the first frame that
26
+ * references `testFile`.
27
+ *
28
+ * Handles both URL-style frames (`file:///C:/…:line:col`) and plain path
29
+ * frames (`at Something (C:/…:line:col)`). The `testFile` value is
30
+ * normalized from a compiled `dist/*.spec.js` path back to the original
31
+ * `*.spec.ts` source path before matching, so source-mapped stacks resolve
32
+ * correctly.
33
+ *
34
+ * @returns The `{line, column}` of the matching frame, or `null` if no frame
35
+ * references the given test file.
36
+ */
37
+ export function extractLineNumberFromStack(stack, testFile) {
38
+ if (!stack)
39
+ return null;
40
+ // Normalize the test file path to the form that will appear in a
41
+ // source-mapped stack: forward slashes, no leading `dist/`, `.spec.ts` extension.
42
+ const normalizedTestFile = testFile
43
+ .replace(/\\/g, '/')
44
+ .replace(/^dist\//, '')
45
+ .replace(/\.spec\.js$/, '.spec.ts');
46
+ const lines = stack.split('\n');
47
+ for (const line of lines) {
48
+ const location = matchFileUrlFrame(line, normalizedTestFile, testFile)
49
+ ?? matchPlainPathFrame(line, normalizedTestFile, testFile);
50
+ if (location)
51
+ return location;
52
+ }
53
+ return null;
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Internal helpers – each matches one stack-frame style
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Match a `file:///` URL-style frame, e.g.:
60
+ * at file:///C:/project/dist/foo.spec.js:12:5
61
+ */
62
+ function matchFileUrlFrame(line, normalizedTestFile, rawTestFile) {
63
+ const match = line.match(/file:\/\/\/(.+?):(\d+):(\d+)/);
64
+ if (!match)
65
+ return null;
66
+ const filePath = match[1].replace(/\\/g, '/');
67
+ if (referencesTestFile(filePath, normalizedTestFile, rawTestFile)) {
68
+ return { line: parseInt(match[2], 10), column: parseInt(match[3], 10) };
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Match a plain-path frame, e.g.:
74
+ * at Object.<anonymous> (C:/project/dist/foo.spec.js:12:5)
75
+ * at C:/project/dist/foo.spec.js:12:5
76
+ */
77
+ function matchPlainPathFrame(line, normalizedTestFile, rawTestFile) {
78
+ const match = line.match(/at\s+(?:.*?\s+\()?(.+?):(\d+):(\d+)\)?/);
79
+ if (!match)
80
+ return null;
81
+ const filePath = match[1].replace(/\\/g, '/');
82
+ if (referencesTestFile(filePath, normalizedTestFile, rawTestFile)) {
83
+ return { line: parseInt(match[2], 10), column: parseInt(match[3], 10) };
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Return `true` when `filePath` (from a stack frame) refers to the same test
89
+ * file as the normalized or raw test-file strings.
90
+ */
91
+ function referencesTestFile(filePath, normalizedTestFile, rawTestFile) {
92
+ const rawNormalised = rawTestFile.replace(/\\/g, '/');
93
+ return (filePath.includes(normalizedTestFile) ||
94
+ filePath.endsWith(normalizedTestFile) ||
95
+ filePath.includes(rawNormalised));
96
+ }
97
+ //# sourceMappingURL=stack-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-trace.js","sourceRoot":"","sources":["../../lib/stack-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,cAAyB;IACrD,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACxB,IAAI,cAAc,EAAE,CAAC;QACjB,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAyB,EAAE,QAAgB;IAClF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,iEAAiE;IACjE,kFAAkF;IAClF,MAAM,kBAAkB,GAAG,QAAQ;SAC9B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC;eAC/D,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAE/D,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,kBAA0B,EAAE,WAAmB;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,kBAA0B,EAAE,WAAmB;IACtF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,kBAA0B,EAAE,WAAmB;IACzF,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,CACH,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACrC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACrC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CACnC,CAAC;AACN,CAAC"}
package/dist/runner.d.ts CHANGED
@@ -11,6 +11,7 @@ export interface ServerWrapper {
11
11
  }
12
12
  export declare function test(name: string, fn: (context: TestContext) => Promise<void>): void;
13
13
  declare class RunnerMatchers<T = unknown> extends Matchers<T> {
14
+ private readonly callSite;
14
15
  constructor(actual: T, isNot?: boolean);
15
16
  private waitAbit;
16
17
  toHaveReceivedMessage(this: RunnerMatchers<PlayerWrapper>, expectedMessage: string, strict?: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"AACA,OAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAEnC,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAgBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpF;AAsCD,cAAM,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,CAAC,EAAE,KAAK,GAAE,OAAe;YAI/B,QAAQ;IAIhB,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B3H,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe5F;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,aAAa;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEjG,GAAG,EAAE,GAAG;IASd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7C;AA0CD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA+KpD"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"AACA,OAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAEnC,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAkBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpF;AAsCD,cAAM,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,CAAC,EAAE,KAAK,GAAE,OAAe;YAM/B,QAAQ;IAIhB,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC3H,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB5F;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,aAAa;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEjG,GAAG,EAAE,GAAG;IASd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7C;AAoDD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAqRpD"}
package/dist/runner.js CHANGED
@@ -6,10 +6,16 @@ import { join } from 'path';
6
6
  import { pathToFileURL } from 'url';
7
7
  import { ItemWrapper, GuiWrapper, createPlayerExtensions } from './lib/wrappers.js';
8
8
  import { Matchers } from "./lib/expect.js";
9
+ import { randomUUID } from "node:crypto";
10
+ import { install as installSourceMapSupport } from 'source-map-support';
11
+ import { captureCallSite, extractLineNumberFromStack } from './lib/stack-trace.js';
12
+ // Enable source map support for accurate TypeScript stack traces
13
+ installSourceMapSupport();
9
14
  export { ItemWrapper, GuiWrapper };
10
15
  const testRegistry = [];
11
16
  let currentPlayer = null;
12
17
  let messageBuffer = [];
18
+ const activeBots = [];
13
19
  export function test(name, fn) {
14
20
  testRegistry.push({ name, fn });
15
21
  }
@@ -41,6 +47,7 @@ function waitFor(checkFn, emitter, eventName, predicateFn, timeoutMsg, timeoutMs
41
47
  class RunnerMatchers extends Matchers {
42
48
  constructor(actual, isNot = false) {
43
49
  super(actual, isNot);
50
+ this.callSite = captureCallSite(RunnerMatchers);
44
51
  }
45
52
  async waitAbit(ms = 500) {
46
53
  return new Promise(resolve => setTimeout(resolve, ms));
@@ -53,15 +60,25 @@ class RunnerMatchers extends Matchers {
53
60
  await this.waitAbit(500);
54
61
  const found = messageBuffer.find(isMatch);
55
62
  if (found) {
56
- throw new Error(`Expected NOT to receive message matching "${expectedMessage}", but received: "${found}"`);
63
+ const error = new Error(`Expected NOT to receive message matching "${expectedMessage}", but received: "${found}"`);
64
+ error.stack = this.callSite;
65
+ throw error;
57
66
  }
58
67
  return;
59
68
  }
60
- const checkFn = () => messageBuffer.find(isMatch);
61
- await waitFor(checkFn, bot, 'message', (jsonMsg) => {
62
- const msgStr = String(jsonMsg);
63
- return isMatch(msgStr) ? msgStr : undefined;
64
- }, `Expected message "${expectedMessage}" not received`);
69
+ try {
70
+ const checkFn = () => messageBuffer.find(isMatch);
71
+ await waitFor(checkFn, bot, 'message', (jsonMsg) => {
72
+ const msgStr = String(jsonMsg);
73
+ return isMatch(msgStr) ? msgStr : undefined;
74
+ }, `Expected message "${expectedMessage}" not received`);
75
+ }
76
+ catch (error) {
77
+ // Replace the error stack with our captured call site
78
+ const newError = new Error(error.message);
79
+ newError.stack = this.callSite;
80
+ throw newError;
81
+ }
65
82
  }
66
83
  async toContainItem(itemName) {
67
84
  const player = this.actual;
@@ -70,11 +87,21 @@ class RunnerMatchers extends Matchers {
70
87
  if (this.isNot) {
71
88
  await this.waitAbit(500);
72
89
  if (checkFn()) {
73
- throw new Error(`Expected inventory NOT to contain item "${itemName}", but it was found`);
90
+ const error = new Error(`Expected inventory NOT to contain item "${itemName}", but it was found`);
91
+ error.stack = this.callSite;
92
+ throw error;
74
93
  }
75
94
  return;
76
95
  }
77
- await waitFor(checkFn, bot, 'windowUpdate', checkFn, `Expected item "${itemName}" not found`);
96
+ try {
97
+ await waitFor(checkFn, bot, 'windowUpdate', checkFn, `Expected item "${itemName}" not found`);
98
+ }
99
+ catch (error) {
100
+ // Replace the error stack with our captured call site
101
+ const newError = new Error(error.message);
102
+ newError.stack = this.callSite;
103
+ throw newError;
104
+ }
78
105
  }
79
106
  }
80
107
  export function expect(target) {
@@ -133,11 +160,12 @@ export async function runTestSession() {
133
160
  const javaPath = process.env.JAVA_PATH;
134
161
  const testFileFilter = process.env.TEST_FILES;
135
162
  const testNameFilter = process.env.TEST_NAMES;
163
+ const testResults = [];
136
164
  if (!serverJar || !serverDir) {
137
165
  throw new Error('SERVER_JAR, JAVA_PATH and SERVER_DIR environment variables must be set');
138
166
  }
139
167
  console.log('\nStarting Paper server...');
140
- const jvmArgsString = process.env.JVM_ARGS || '-Xmx2G -Dcom.mojang.eula.agree=true';
168
+ const jvmArgsString = process.env.JVM_ARGS || '';
141
169
  const jvmArgs = jvmArgsString.split(' ').filter(arg => arg.trim() !== '');
142
170
  console.log(`JVM Arguments: ${jvmArgs.join(' ')}`);
143
171
  const serverProcess = spawn(javaPath, [...jvmArgs, '-jar', serverJar, '--nogui'], {
@@ -190,7 +218,8 @@ export async function runTestSession() {
190
218
  }
191
219
  console.log(` Test: ${testCase.name}`);
192
220
  messageBuffer.length = 0;
193
- const botUsername = `TestBot_${Math.floor(Math.random() * 1000)}`;
221
+ const uniqueId = randomUUID().split('-')[0];
222
+ const botUsername = `Test_${uniqueId}`;
194
223
  console.log(`[Bot] Creating bot: ${botUsername}`);
195
224
  const bot = mineflayer.createBot({
196
225
  host: 'localhost',
@@ -200,6 +229,7 @@ export async function runTestSession() {
200
229
  auth: 'offline'
201
230
  });
202
231
  currentPlayer = bot;
232
+ activeBots.push(bot);
203
233
  await new Promise((resolve, reject) => {
204
234
  const timeout = setTimeout(() => {
205
235
  reject(new Error('Bot failed to spawn within 10 seconds'));
@@ -253,24 +283,110 @@ export async function runTestSession() {
253
283
  };
254
284
  await testCase.fn({ player, server });
255
285
  console.log(` PASSED\n`);
286
+ testResults.push({ file, testName: testCase.name, passed: true });
256
287
  }
257
288
  catch (error) {
258
- console.log(` FAILED: ${error.message}\n`);
259
- throw error;
289
+ const errorMsg = error.message;
290
+ const stack = error.stack;
291
+ const location = extractLineNumberFromStack(stack, file);
292
+ console.log(` FAILED: ${errorMsg}\n`);
293
+ testResults.push({
294
+ file,
295
+ testName: testCase.name,
296
+ passed: false,
297
+ error: errorMsg,
298
+ stack,
299
+ lineNumber: location?.line,
300
+ columnNumber: location?.column
301
+ });
260
302
  }
261
303
  finally {
304
+ bot.removeAllListeners('error');
305
+ bot.removeAllListeners('end');
262
306
  bot.quit();
263
307
  currentPlayer = null;
264
- await new Promise(resolve => setTimeout(resolve, 5000));
308
+ const index = activeBots.indexOf(bot);
309
+ if (index > -1)
310
+ activeBots.splice(index, 1);
265
311
  }
266
312
  }
267
313
  }
268
- console.log('\nAll tests passed!');
314
+ console.log('\n========================================');
315
+ console.log('Test Summary');
316
+ console.log('========================================');
317
+ const passed = testResults.filter(r => r.passed);
318
+ const failed = testResults.filter(r => !r.passed);
319
+ console.log(`Total: ${testResults.length}`);
320
+ console.log(`Passed: ${passed.length}`);
321
+ console.log(`Failed: ${failed.length}`);
322
+ if (failed.length > 0) {
323
+ console.log('\nFailed Tests:');
324
+ for (const result of failed) {
325
+ const filePath = result.file.replace(/^dist[/\\]/, '').replace(/\.spec\.js$/, '.spec.ts');
326
+ const absolutePath = join(process.cwd(), filePath);
327
+ const lineNumber = result.lineNumber;
328
+ const columnNumber = result.columnNumber || 1;
329
+ const fileUrl = pathToFileURL(absolutePath).href + (lineNumber ? `:${lineNumber}:${columnNumber}` : '');
330
+ console.log(` ✗ ${result.testName}`);
331
+ console.log(` ${result.error}`);
332
+ console.log(` ${fileUrl}`);
333
+ }
334
+ console.log('');
335
+ setTimeout(() => {
336
+ process.exit(1);
337
+ }, 1000).unref();
338
+ throw new Error(`${failed.length} test(s) failed`);
339
+ }
340
+ else {
341
+ console.log('\nAll tests passed!');
342
+ }
269
343
  }
270
344
  finally {
271
- console.log('\nStopping server...');
272
- serverProcess.kill();
273
- await new Promise(resolve => setTimeout(resolve, 2000));
345
+ await Promise.all(activeBots.map(bot => {
346
+ return new Promise((resolve) => {
347
+ const timeout = setTimeout(() => {
348
+ console.log(`[WARNING] Bot ${bot.username} cleanup timeout, forcing end`);
349
+ resolve();
350
+ }, 2000);
351
+ bot.once('end', () => {
352
+ clearTimeout(timeout);
353
+ resolve();
354
+ });
355
+ try {
356
+ bot.quit();
357
+ }
358
+ catch (err) {
359
+ clearTimeout(timeout);
360
+ resolve();
361
+ }
362
+ });
363
+ }));
364
+ activeBots.length = 0;
365
+ serverProcess.stdin.write('stop\n');
366
+ // Wait for the server to exit gracefully
367
+ await new Promise((resolve) => {
368
+ const timeout = setTimeout(() => {
369
+ console.log('[WARNING] Server did not stop gracefully, forcing shutdown...');
370
+ serverProcess.kill();
371
+ resolve();
372
+ }, 30000); // 30 second timeout
373
+ serverProcess.once('exit', (code) => {
374
+ clearTimeout(timeout);
375
+ if (code !== 0) {
376
+ console.log(`[WARNING] Server exited with code: ${code}`);
377
+ }
378
+ resolve();
379
+ });
380
+ });
381
+ // Clean up all listeners and streams
382
+ serverProcess.removeAllListeners();
383
+ serverProcess.stdin.end();
384
+ serverProcess.stdout.destroy();
385
+ serverProcess.stderr.destroy();
386
+ // Give the event loop a moment to drain, then force exit
387
+ setTimeout(() => {
388
+ process.exit(0);
389
+ }, 1000).unref();
274
390
  }
275
391
  }
276
392
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drownek/paper-e2e-runner",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "End-to-end testing framework for Paper/Spigot Minecraft plugins",
5
5
  "type": "module",
6
6
  "main": "dist/runner.js",
@@ -10,7 +10,8 @@
10
10
  },
11
11
  "scripts": {
12
12
  "build": "tsc",
13
- "prepublishOnly": "npm run build"
13
+ "prepublishOnly": "npm run build",
14
+ "watch": "tsc --watch"
14
15
  },
15
16
  "files": [
16
17
  "dist"
@@ -35,10 +36,14 @@
35
36
  "url": "https://github.com/drownek/paper-e2e-test/issues"
36
37
  },
37
38
  "dependencies": {
38
- "mineflayer": "^4.0.0"
39
+ "js-yaml": "^4.1.0",
40
+ "mineflayer": "^4.0.0",
41
+ "source-map-support": "^0.5.21"
39
42
  },
40
43
  "devDependencies": {
44
+ "@types/js-yaml": "^4.0.9",
41
45
  "@types/node": "^22.10.5",
46
+ "@types/source-map-support": "^0.5.10",
42
47
  "typescript": "^5.7.3"
43
48
  },
44
49
  "engines": {