@ohos-ports/floss 5.0.1-beta.2 → 5.0.1-beta.4

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.
@@ -460,7 +460,12 @@ function runInBrowser(opts) {
460
460
  await closeBrowser();
461
461
 
462
462
  // ── 16. Return result ──
463
- if (result.failures > 0) {
463
+ if (result.total === 0) {
464
+ reject(new Error(
465
+ "No tests executed in browser. Test files likely use require() " +
466
+ "which is not available in browser context."
467
+ ));
468
+ } else if (result.failures > 0) {
464
469
  reject(new Error(
465
470
  "Mocha tests failed: " + result.failures +
466
471
  " failure(s) out of " + (result.total || "unknown") + " test(s)."
package/lib/index.js CHANGED
@@ -54,25 +54,19 @@ function floss(options) {
54
54
  // Level 3: Error — no runner available
55
55
 
56
56
  // Level 1: Try browser-runner (海泰浏览器 + CDP)
57
+ // Level 2: Fall back to node-runner (jsdom) on any failure
57
58
  try {
58
59
  const browserRunner = require('./browser-runner');
59
- return browserRunner.runInBrowser(opts);
60
- }
61
- catch (browserErr) {
62
- // Level 2: Try node-runner (jsdom)
63
- try {
60
+ return browserRunner.runInBrowser(opts).catch((browserErr) => {
61
+ // Browser runner failed (launch error, 0 tests, or timeout)
64
62
  const nodeRunner = require('./node-runner');
65
63
  return nodeRunner.runInNode(opts);
66
- }
67
- catch (nodeErr) {
68
- // Level 3: No runner available
69
- throw new Error(
70
- 'Unable to find Electron. No test runner available.\n' +
71
- ' Browser runner (CDP) failed: ' + browserErr.message + '\n' +
72
- ' Node runner (jsdom) failed: ' + nodeErr.message + '\n' +
73
- 'Install \'electron\' alongside Floss, or ensure hdc + browser or jsdom is available.'
74
- );
75
- }
64
+ });
65
+ }
66
+ catch (browserErr) {
67
+ // require('./browser-runner') failed synchronously
68
+ const nodeRunner = require('./node-runner');
69
+ return nodeRunner.runInNode(opts);
76
70
  }
77
71
  }
78
72
  const app = path.join(__dirname, 'main');
@@ -89,6 +89,8 @@ function runInNode(opts) {
89
89
  }
90
90
  // Add resolved files to Mocha
91
91
  resolvedFiles.forEach((file) => mochaInst.addFile(file));
92
+ // Set global.options for test files that depend on it (same as renderer.js)
93
+ global.options = opts;
92
94
  // Run tests
93
95
  mochaInst.run((errorCount) => {
94
96
  if (errorCount > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohos-ports/floss",
3
- "version": "5.0.1-beta.2",
3
+ "version": "5.0.1-beta.4",
4
4
  "description": "Unit-testing for those hard to reach places",
5
5
  "bin": "./lib/floss.js",
6
6
  "main": "./lib/index.js",