@arcadialdev/arcality 2.2.6 → 2.2.8

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": "@arcadialdev/arcality",
3
- "version": "2.2.6",
3
+ "version": "2.2.8",
4
4
  "description": "AI-powered QA testing tool — Autonomous web testing agent by Arcadial",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -309,7 +309,7 @@ function run(cmd, args, options = {}) {
309
309
 
310
310
  const p = spawn(cmd, args, {
311
311
  stdio: ["ignore", "pipe", "pipe"],
312
- shell: process.platform === "win32",
312
+ shell: false, // IMPORTANT: shell:false prevents Windows CMD from splitting paths with spaces
313
313
  windowsHide: true,
314
314
  env: { ...options.env || process.env, NODE_PATH: newNodePath },
315
315
  });
@@ -801,12 +801,15 @@ async function main() {
801
801
  globalReportProcess = null;
802
802
  }
803
803
 
804
- console.log(chalk.blue(`🌐 Opening Arcality Report: ${arcalityPath}`));
805
-
806
- if (process.platform === "win32") {
807
- exec(`start "" "${arcalityPath}"`);
804
+ if (fs.existsSync(arcalityPath)) {
805
+ console.log(chalk.blue(`🌐 Opening Arcality Report: ${arcalityPath}`));
806
+ if (process.platform === "win32") {
807
+ exec(`start "" "${arcalityPath}"`);
808
+ } else {
809
+ exec(`open "${arcalityPath}"`);
810
+ }
808
811
  } else {
809
- exec(`open "${arcalityPath}"`);
812
+ console.log(chalk.yellow(`⚠️ Report not generated (test may have crashed before completing).`));
810
813
  }
811
814
 
812
815
  await new Promise(resolve => setTimeout(resolve, 2000));
package/scripts/init.mjs CHANGED
@@ -235,18 +235,24 @@ async function main() {
235
235
 
236
236
  if (!res.ok) {
237
237
  const errText = await res.text().catch(() => '');
238
- sCreate.stop(chalk.red(`❌ Failed to create project (HTTP ${res.status}): ${errText}`));
239
- process.exit(1);
238
+ // If response is HTML (e.g. Cloudflare 521), show a clean message
239
+ const isHtml = errText.trim().startsWith('<');
240
+ const displayError = isHtml
241
+ ? `The Arcality backend server is temporarily unavailable (HTTP ${res.status}). The project will be saved locally only.`
242
+ : `HTTP ${res.status}: ${errText.slice(0, 200)}`;
243
+
244
+ sCreate.stop(chalk.yellow(`⚠️ ${displayError}`));
245
+ // Don't exit — write the config with a local-only project ID so user can still run
246
+ projectId = projectId || `local_${Date.now()}`;
247
+ } else {
248
+ const created = await res.json();
249
+ projectId = created.id || created.Id;
250
+ organizationId = organizationId || created.organizationId || created.organization_id || null;
251
+ sCreate.stop(chalk.green(`✅ Project created: "${projectName.trim()}" (${projectId})`));
240
252
  }
241
-
242
- const created = await res.json();
243
- projectId = created.id || created.Id;
244
- organizationId = organizationId || created.organizationId || created.organization_id || null;
245
-
246
- sCreate.stop(chalk.green(`✅ Project created: "${projectName.trim()}" (${projectId})`));
247
253
  } catch (err) {
248
- sCreate.stop(chalk.red(`❌ Error creating project: ${err.message}`));
249
- process.exit(1);
254
+ sCreate.stop(chalk.yellow(`⚠️ Could not reach Arcality server: ${err.message}. Continuing in local mode.`));
255
+ projectId = projectId || `local_${Date.now()}`;
250
256
  }
251
257
 
252
258
  // ── Step 6: Write arcality.config ──