form-tester 0.11.0 → 0.11.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.
@@ -5,9 +5,10 @@ Install (user runs once):
5
5
  npm install -g form-tester
6
6
  ```
7
7
 
8
- Install skill files:
8
+ Install skill files and configure:
9
9
  ```
10
10
  form-tester install
11
+ form-tester init # set baseUrl, pnr, person, etc.
11
12
  ```
12
13
 
13
14
  Test modes:
@@ -8,6 +8,7 @@ User must install globally first:
8
8
  ```bash
9
9
  npm install -g form-tester
10
10
  form-tester install
11
+ form-tester init # set baseUrl, pnr, person, etc.
11
12
  ```
12
13
 
13
14
  ## Running a test
@@ -2,5 +2,6 @@
2
2
  "pnr": "YOUR_PNR_HERE",
3
3
  "person": "",
4
4
  "baseUrl": "",
5
- "skjemaUrl": "/skjemautfyller"
5
+ "skjemaUrl": "/skjemautfyller",
6
+ "dokumenterUrlTemplate": "/dokumenter?pnr={PNR}"
6
7
  }
package/form-tester.js CHANGED
@@ -7,7 +7,7 @@ const { spawn, execSync } = require("child_process");
7
7
  const CONFIG_PATH = path.join(process.cwd(), "form-tester.config.json");
8
8
  const OUTPUT_BASE = path.resolve(process.cwd(), "output");
9
9
  const ISSUES_PATH = path.join(OUTPUT_BASE, "issues.jsonl");
10
- const LOCAL_VERSION = "0.11.0";
10
+ const LOCAL_VERSION = "0.11.1";
11
11
  const RECOMMENDED_PERSON = "Uromantisk Direktør";
12
12
 
13
13
  // Recording — persisted to disk so `form-tester exec` can append across processes
@@ -936,6 +936,7 @@ function printHelp() {
936
936
  [
937
937
  "",
938
938
  "Subcommands (run directly):",
939
+ " form-tester init Set up config (baseUrl, pnr, person, etc.)",
939
940
  " form-tester install [--global] Install skill files into project or ~/.claude/skills/",
940
941
  " form-tester test <name-or-url> --auto Non-interactive test (for AI agents)",
941
942
  " form-tester test <name-or-url> --human Interactive test with prompts",
@@ -1736,6 +1737,51 @@ function install(targetDir, isGlobal) {
1736
1737
  async function main() {
1737
1738
  const args = process.argv.slice(2);
1738
1739
 
1740
+ if (args[0] === "init") {
1741
+ const config = loadConfig();
1742
+ console.log("Form Tester Setup\n");
1743
+ console.log("Current config:");
1744
+ console.log(` baseUrl: ${config.baseUrl || "(not set)"}`);
1745
+ console.log(` pnr: ${config.pnr || "(not set)"}`);
1746
+ console.log(` person: ${config.person || "(not set)"}`);
1747
+ console.log(` skjemaUrl: ${config.skjemaUrl || "/skjemautfyller"}`);
1748
+ console.log(` dokumenterUrl: ${config.dokumenterUrlTemplate || "/dokumenter?pnr={PNR}"}`);
1749
+ console.log("");
1750
+
1751
+ const currentRl = ensureReadline();
1752
+
1753
+ const prompt = (question, current) => new Promise((resolve) => {
1754
+ const suffix = current ? ` [${current}]` : "";
1755
+ currentRl.question(`${question}${suffix}: `, (answer) => {
1756
+ resolve(answer.trim() || current || "");
1757
+ });
1758
+ });
1759
+
1760
+ config.baseUrl = await prompt("Base URL (e.g. https://tjenester-a-vak-sprak.int-hn.nhn.no)", config.baseUrl);
1761
+ config.pnr = await prompt("PNR (fødselsnummer for test)", config.pnr);
1762
+ config.person = await prompt("Default person name (e.g. Uromantisk Direktør)", config.person);
1763
+ config.skjemaUrl = await prompt("Skjema path prefix", config.skjemaUrl || "/skjemautfyller");
1764
+ config.dokumenterUrlTemplate = await prompt("Dokumenter URL template", config.dokumenterUrlTemplate || "/dokumenter?pnr={PNR}");
1765
+
1766
+ saveConfig(config);
1767
+ currentRl.close();
1768
+
1769
+ console.log("\nConfig saved to form-tester.config.json:");
1770
+ console.log(` baseUrl: ${config.baseUrl}`);
1771
+ console.log(` pnr: ${config.pnr}`);
1772
+ console.log(` person: ${config.person}`);
1773
+ console.log(` skjemaUrl: ${config.skjemaUrl}`);
1774
+ console.log(` dokumenterUrl: ${config.dokumenterUrlTemplate}`);
1775
+
1776
+ // Test URL resolution
1777
+ console.log(`\nTest: form-tester test SLV-PasRapp-2020 --auto`);
1778
+ const testUrl = resolveFormUrl("SLV-PasRapp-2020", config);
1779
+ const withPnr = config.pnr && !extractPnrFromUrl(testUrl) ? setPnrOnUrl(testUrl, config.pnr) : testUrl;
1780
+ console.log(` → ${withPnr}`);
1781
+
1782
+ process.exit(0);
1783
+ }
1784
+
1739
1785
  if (args[0] === "install") {
1740
1786
  const isGlobal = args.includes("--global") || args.includes("-g");
1741
1787
  const remaining = args.slice(1).filter((a) => a !== "--global" && a !== "-g");
@@ -1850,13 +1896,21 @@ async function main() {
1850
1896
  console.error(" form-tester url skjemautfyller/SLV-PasRapp-2020");
1851
1897
  console.error(" form-tester url https://example.com/skjemautfyller/FORM");
1852
1898
  console.error(`\nConfig: baseUrl=${config.baseUrl || "(not set)"}, skjemaUrl=${config.skjemaUrl || "/skjemautfyller"}, pnr=${config.pnr || "(not set)"}`);
1899
+ console.error("\nRun 'form-tester init' to configure.");
1853
1900
  process.exit(1);
1854
1901
  }
1855
- let resolved = resolveFormUrl(input, config);
1856
- if (config.pnr && !extractPnrFromUrl(resolved)) {
1857
- resolved = setPnrOnUrl(resolved, config.pnr);
1902
+ let formUrl = resolveFormUrl(input, config);
1903
+ if (config.pnr && !extractPnrFromUrl(formUrl)) {
1904
+ formUrl = setPnrOnUrl(formUrl, config.pnr);
1858
1905
  }
1859
- console.log(resolved);
1906
+ // Also resolve dokumenter URL
1907
+ const tmpConfig = { ...config, lastTestUrl: formUrl };
1908
+ const dokUrl = resolveDokumenterUrl(tmpConfig);
1909
+
1910
+ console.log(`Form URL: ${formUrl}`);
1911
+ console.log(`Dokumenter URL: ${dokUrl || "(not available — set pnr)"}`);
1912
+ console.log(`Person: ${config.person || "(not set)"}`);
1913
+ console.log(`\nRun: form-tester test ${input} --auto`);
1860
1914
  process.exit(0);
1861
1915
  }
1862
1916
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "form-tester",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "AI-powered form testing skill for /skjemautfyller forms using Playwright CLI. Works with Claude Code and GitHub Copilot.",
5
5
  "main": "form-tester.js",
6
6
  "bin": {