prowl-tools 0.1.6 → 0.1.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/README.md +347 -183
- package/dist/{chunk-5KQR3IR3.js → chunk-CWLRDV5P.js} +839 -504
- package/dist/chunk-CWLRDV5P.js.map +1 -0
- package/dist/{chunk-WHAMB4TY.js → chunk-JFJQNJSJ.js} +411 -3
- package/dist/chunk-JFJQNJSJ.js.map +1 -0
- package/dist/index.cjs +1707 -892
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +108 -13
- package/dist/index.js.map +1 -1
- package/dist/lib.cjs +1285 -532
- package/dist/lib.cjs.map +1 -1
- package/dist/lib.d.cts +235 -24
- package/dist/lib.d.ts +235 -24
- package/dist/lib.js +59 -5
- package/dist/{loader-PBBYV3U7.js → loader-JTHA4BYG.js} +2 -2
- package/examples/hunts/hello.yml +1 -1
- package/examples/hunts/login-flow.yml +58 -0
- package/package.json +6 -3
- package/dist/chunk-5KQR3IR3.js.map +0 -1
- package/dist/chunk-WHAMB4TY.js.map +0 -1
- /package/dist/{loader-PBBYV3U7.js.map → loader-JTHA4BYG.js.map} +0 -0
package/dist/lib.d.ts
CHANGED
|
@@ -327,7 +327,7 @@ type StepResult = {
|
|
|
327
327
|
type AssertionResult = {
|
|
328
328
|
type: string;
|
|
329
329
|
value?: string | boolean;
|
|
330
|
-
status: "pass" | "fail";
|
|
330
|
+
status: "pass" | "fail" | "skipped";
|
|
331
331
|
error?: string;
|
|
332
332
|
};
|
|
333
333
|
type RunArtifacts = {
|
|
@@ -444,6 +444,8 @@ interface SessionDriver {
|
|
|
444
444
|
goto(url: string, options?: NavigateOptions): Promise<void>;
|
|
445
445
|
currentUrl(): string;
|
|
446
446
|
count(selector: string): Promise<number>;
|
|
447
|
+
/** Count only elements the driver considers visibly present, when it can distinguish visibility from existence. */
|
|
448
|
+
visibleCount?(selector: string): Promise<number>;
|
|
447
449
|
textContent(selector: string): Promise<string | null>;
|
|
448
450
|
click(selector: string): Promise<void>;
|
|
449
451
|
clickFirst(selector: string): Promise<void>;
|
|
@@ -453,6 +455,12 @@ interface SessionDriver {
|
|
|
453
455
|
selectOption(selector: string, value: string): Promise<void>;
|
|
454
456
|
selectOptionFirst(selector: string, value: string): Promise<void>;
|
|
455
457
|
hover(selector: string): Promise<void>;
|
|
458
|
+
/**
|
|
459
|
+
* Scroll the viewport in `direction` by `amount` (engine-defined units: CSS
|
|
460
|
+
* pixels on web, a synthesized swipe distance on mobile). Native targets that
|
|
461
|
+
* have no scroll gesture (macOS) reject this.
|
|
462
|
+
*/
|
|
463
|
+
scroll(direction: "up" | "down" | "left" | "right", amount?: number): Promise<void>;
|
|
456
464
|
scrollIntoView(selector: string): Promise<void>;
|
|
457
465
|
setInputFiles(selector: string, files: string | string[]): Promise<void>;
|
|
458
466
|
countByRole(role: string, name: string): Promise<number>;
|
|
@@ -544,13 +552,57 @@ declare function parseMacSelector(selector: string): MacQuery;
|
|
|
544
552
|
/** Wrap a live {@link MacHelperClient} as a {@link SessionDriver}. */
|
|
545
553
|
declare function createMacDriver(client: MacHelperClient, options?: MacDriverOptions): SessionDriver;
|
|
546
554
|
|
|
547
|
-
|
|
555
|
+
/** Basename of the helper executable, in the tarball and on disk. */
|
|
556
|
+
declare const HELPER_BINARY = "prowl-macdriver";
|
|
557
|
+
/** Pinned helper version. A CLI release always installs this exact version. */
|
|
558
|
+
declare const MACDRIVER_VERSION = "0.1.0";
|
|
559
|
+
/** GitHub `owner/repo` that hosts the helper releases. */
|
|
560
|
+
declare const MACDRIVER_REPO = "prowl-tools/prowl";
|
|
561
|
+
/** Code-signing identifier assigned to release builds. */
|
|
562
|
+
declare const MACDRIVER_SIGNING_IDENTIFIER = "tools.prowl.macdriver";
|
|
563
|
+
/** Developer ID Application common-name prefix expected on release builds. */
|
|
564
|
+
declare const MACDRIVER_SIGNING_AUTHORITY_PREFIX = "Developer ID Application: Genkei Labs";
|
|
565
|
+
/** Accepted helper release version token. */
|
|
566
|
+
declare const MACDRIVER_VERSION_PATTERN: RegExp;
|
|
567
|
+
/** Validate the helper release version before using it in URLs or paths. */
|
|
568
|
+
declare function validateMacdriverVersion(version: string): string;
|
|
569
|
+
/** Git tag for a helper version — the release the workflow builds. */
|
|
570
|
+
declare function macdriverReleaseTag(version?: string): string;
|
|
571
|
+
/** Release asset file name for the universal (arm64 + x86_64) binary zip. */
|
|
572
|
+
declare function macdriverAssetName(version?: string): string;
|
|
573
|
+
/** Release asset file name for the SHA-256 checksum sidecar. */
|
|
574
|
+
declare function macdriverChecksumName(version?: string): string;
|
|
575
|
+
/** Download URL for a named asset of the pinned release (follows redirects). */
|
|
576
|
+
declare function macdriverAssetUrl(assetName: string, version?: string): string;
|
|
577
|
+
/** Root of all user-level installs: `~/.prowl/macdriver`. */
|
|
578
|
+
declare function macdriverInstallRoot(homedir?: string): string;
|
|
579
|
+
/** Directory that holds a specific installed version. */
|
|
580
|
+
declare function macdriverVersionDir(version?: string, homedir?: string): string;
|
|
581
|
+
/** Absolute path to the installed helper binary for a version. */
|
|
582
|
+
declare function macdriverInstalledBinary(version?: string, homedir?: string): string;
|
|
583
|
+
|
|
548
584
|
/**
|
|
549
|
-
*
|
|
550
|
-
*
|
|
551
|
-
*
|
|
585
|
+
* Guidance shown when the helper can't be resolved. Leads with the
|
|
586
|
+
* two-minute `prowl macdriver install` path; source build and the
|
|
587
|
+
* `PROWL_MACDRIVER_BIN` override are the contributor fallbacks.
|
|
552
588
|
*/
|
|
553
|
-
declare function
|
|
589
|
+
declare function macdriverBuildInstructions(): string;
|
|
590
|
+
type ResolveHelperOptions = {
|
|
591
|
+
/** Home directory for the user-level install lookup (defaults to `os.homedir()`). */
|
|
592
|
+
homedir?: string;
|
|
593
|
+
};
|
|
594
|
+
/**
|
|
595
|
+
* Resolve the helper binary path. Search order (documented in the README's
|
|
596
|
+
* macOS Target section):
|
|
597
|
+
* 1. `PROWL_MACDRIVER_BIN` env override (absolute path to the binary);
|
|
598
|
+
* 2. the user-level install of the pinned version at
|
|
599
|
+
* `~/.prowl/macdriver/<MACDRIVER_VERSION>/prowl-macdriver`
|
|
600
|
+
* (what `prowl macdriver install` writes);
|
|
601
|
+
* 3. the contributor's repo-local source build under `macdriver/.build/`
|
|
602
|
+
* (`release` then `debug`).
|
|
603
|
+
* Throws with install-first guidance when none is found.
|
|
604
|
+
*/
|
|
605
|
+
declare function resolveHelperBinary(env?: NodeJS.ProcessEnv, options?: ResolveHelperOptions): string;
|
|
554
606
|
/** Default per-request deadline for the helper transport. */
|
|
555
607
|
declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
|
|
556
608
|
type SpawnMacHelperOptions = {
|
|
@@ -594,6 +646,151 @@ declare function launchMacSession(options: LaunchMacOptions): Promise<MacSession
|
|
|
594
646
|
/** Quit the target app (best effort) and shut the helper down. */
|
|
595
647
|
declare function closeMacSession(session: MacSession): Promise<void>;
|
|
596
648
|
|
|
649
|
+
/** Minimal shape of the `fetch` responses this module consumes. */
|
|
650
|
+
interface FetchResponseLike {
|
|
651
|
+
ok: boolean;
|
|
652
|
+
status: number;
|
|
653
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
654
|
+
text(): Promise<string>;
|
|
655
|
+
}
|
|
656
|
+
/** A `fetch`-like function; the real global `fetch` satisfies it. */
|
|
657
|
+
type FetchLike$2 = (url: string, init?: {
|
|
658
|
+
redirect?: "follow" | "error" | "manual";
|
|
659
|
+
}) => Promise<FetchResponseLike>;
|
|
660
|
+
/** Extracts the binary out of a downloaded zip into `destDir`. */
|
|
661
|
+
type Extractor = (zipPath: string, destDir: string) => Promise<void>;
|
|
662
|
+
/** Lists the raw path entries in a downloaded zip before extraction. */
|
|
663
|
+
type ArchiveLister = (zipPath: string) => Promise<string[]>;
|
|
664
|
+
/** Verifies the code signature of an installed binary; throws if invalid. */
|
|
665
|
+
type SignatureVerifier = (binaryPath: string) => Promise<void>;
|
|
666
|
+
interface CommandResult {
|
|
667
|
+
stdout?: string | Buffer;
|
|
668
|
+
stderr?: string | Buffer;
|
|
669
|
+
}
|
|
670
|
+
type CommandRunner = (file: string, args: string[]) => Promise<CommandResult>;
|
|
671
|
+
/** Parse the hex digest out of a `shasum`-style `.sha256` file. */
|
|
672
|
+
declare function parseChecksumFile(text: string): string;
|
|
673
|
+
/** SHA-256 of a buffer, lowercase hex. */
|
|
674
|
+
declare function sha256Hex(bytes: Buffer): string;
|
|
675
|
+
/** Default archive lister: `zipinfo -1`, used before any extraction happens. */
|
|
676
|
+
declare const zipinfoArchiveLister: ArchiveLister;
|
|
677
|
+
/** Validate the zip member list before extraction. */
|
|
678
|
+
declare function validateMacdriverArchiveEntries(entries: string[]): void;
|
|
679
|
+
/** Default extractor: Apple's `ditto`, which preserves the code signature. */
|
|
680
|
+
declare const dittoExtractor: Extractor;
|
|
681
|
+
interface CodesignDetails {
|
|
682
|
+
identifier: string | null;
|
|
683
|
+
authorities: string[];
|
|
684
|
+
teamIdentifier: string | null;
|
|
685
|
+
}
|
|
686
|
+
declare function parseCodesignDetails(text: string): CodesignDetails;
|
|
687
|
+
declare function verifyMacdriverSignature(binaryPath: string, run?: CommandRunner): Promise<void>;
|
|
688
|
+
/**
|
|
689
|
+
* Default signature verifier: fail closed unless `codesign` verifies the
|
|
690
|
+
* signature, the identity matches the release contract, and Gatekeeper accepts
|
|
691
|
+
* the executable through `spctl --assess --type execute`.
|
|
692
|
+
*/
|
|
693
|
+
declare const codesignVerifier: SignatureVerifier;
|
|
694
|
+
interface DownloadOptions {
|
|
695
|
+
version?: string;
|
|
696
|
+
fetchImpl?: FetchLike$2;
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Download the pinned release's universal-binary zip and verify its SHA-256
|
|
700
|
+
* against the released `.sha256` sidecar. Returns the verified zip bytes.
|
|
701
|
+
* Throws a clear, actionable error on a 404 (no release cut yet) or a checksum
|
|
702
|
+
* mismatch.
|
|
703
|
+
*/
|
|
704
|
+
declare function downloadAndVerify(options?: DownloadOptions): Promise<Buffer>;
|
|
705
|
+
interface InstallOptions {
|
|
706
|
+
version?: string;
|
|
707
|
+
force?: boolean;
|
|
708
|
+
homedir?: string;
|
|
709
|
+
fetchImpl?: FetchLike$2;
|
|
710
|
+
listArchiveEntries?: ArchiveLister;
|
|
711
|
+
extract?: Extractor;
|
|
712
|
+
verifySignature?: SignatureVerifier;
|
|
713
|
+
}
|
|
714
|
+
interface InstallResult {
|
|
715
|
+
version: string;
|
|
716
|
+
binaryPath: string;
|
|
717
|
+
alreadyInstalled: boolean;
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Install the pinned helper to `~/.prowl/macdriver/<version>/prowl-macdriver`
|
|
721
|
+
* (0755). Returns `alreadyInstalled: true` (a no-op) when the binary is already
|
|
722
|
+
* present and `force` is not set. The downloaded archive is inspected before
|
|
723
|
+
* extraction, extracted into a temporary staging directory, and moved into place
|
|
724
|
+
* only after the staged helper passes file and signature verification.
|
|
725
|
+
*/
|
|
726
|
+
declare function installMacdriver(options?: InstallOptions): Promise<InstallResult>;
|
|
727
|
+
interface InstalledVersion {
|
|
728
|
+
version: string;
|
|
729
|
+
binaryPath: string;
|
|
730
|
+
}
|
|
731
|
+
interface MacdriverStatus {
|
|
732
|
+
/** The binary Prowl would use now, and how it was found. */
|
|
733
|
+
resolved: {
|
|
734
|
+
path: string;
|
|
735
|
+
source: "env" | "user-install" | "source-build";
|
|
736
|
+
} | null;
|
|
737
|
+
/** The pinned version the CLI targets. */
|
|
738
|
+
pinnedVersion: string;
|
|
739
|
+
/** All versions found under `~/.prowl/macdriver/`. */
|
|
740
|
+
installed: InstalledVersion[];
|
|
741
|
+
/** Version string the resolved binary reports, or null if it couldn't run. */
|
|
742
|
+
probedVersion: string | null;
|
|
743
|
+
}
|
|
744
|
+
/** Probe a helper binary's `version` output; null if it can't be run/parsed. */
|
|
745
|
+
type VersionProbe = (binaryPath: string) => Promise<string | null>;
|
|
746
|
+
/** Default probe: run `<binary> version` and parse the `prowl-macdriver X.Y.Z` line. */
|
|
747
|
+
declare const runVersionProbe: VersionProbe;
|
|
748
|
+
interface StatusOptions {
|
|
749
|
+
env?: NodeJS.ProcessEnv;
|
|
750
|
+
homedir?: string;
|
|
751
|
+
probe?: VersionProbe;
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Gather the state `prowl macdriver status` reports: the resolved binary and
|
|
755
|
+
* how it was found, every installed version, and the resolved binary's probed
|
|
756
|
+
* version. Pure aside from filesystem reads and the (injectable) probe.
|
|
757
|
+
*/
|
|
758
|
+
declare function collectMacdriverStatus(options?: StatusOptions): Promise<MacdriverStatus>;
|
|
759
|
+
/** Static TCC-permission guidance printed after install / in status. */
|
|
760
|
+
declare function tccGuidance(): string;
|
|
761
|
+
|
|
762
|
+
/** Screen dimensions in device points, as reported by the agent. */
|
|
763
|
+
interface ScreenSize {
|
|
764
|
+
width: number;
|
|
765
|
+
height: number;
|
|
766
|
+
}
|
|
767
|
+
/** One item in a W3C `pointer` action sequence. */
|
|
768
|
+
type PointerActionItem = {
|
|
769
|
+
type: "pointerMove";
|
|
770
|
+
duration: number;
|
|
771
|
+
x: number;
|
|
772
|
+
y: number;
|
|
773
|
+
origin?: "viewport";
|
|
774
|
+
} | {
|
|
775
|
+
type: "pointerDown";
|
|
776
|
+
button: number;
|
|
777
|
+
} | {
|
|
778
|
+
type: "pointerUp";
|
|
779
|
+
button: number;
|
|
780
|
+
} | {
|
|
781
|
+
type: "pause";
|
|
782
|
+
duration: number;
|
|
783
|
+
};
|
|
784
|
+
/** A single `touch` pointer input source and its ordered actions. */
|
|
785
|
+
interface PointerActionSequence {
|
|
786
|
+
type: "pointer";
|
|
787
|
+
id: string;
|
|
788
|
+
parameters: {
|
|
789
|
+
pointerType: "touch";
|
|
790
|
+
};
|
|
791
|
+
actions: PointerActionItem[];
|
|
792
|
+
}
|
|
793
|
+
|
|
597
794
|
/** The selector kinds the native dialect understands. */
|
|
598
795
|
type NativeSelectorKind = "id" | "label" | "text" | "role" | "focused";
|
|
599
796
|
/**
|
|
@@ -811,6 +1008,10 @@ interface AndroidAgentClient {
|
|
|
811
1008
|
getText(elementId: string): Promise<string | null>;
|
|
812
1009
|
/** Dispatch a global key event by Android key code (goes to the focused view). */
|
|
813
1010
|
pressKeyCode(keyCode: number): Promise<void>;
|
|
1011
|
+
/** Current screen size in pixels (uiautomator2 `/window/current/size`), for gestures. */
|
|
1012
|
+
windowSize(): Promise<ScreenSize>;
|
|
1013
|
+
/** Perform a W3C pointer action sequence (`POST /session/:id/actions`). */
|
|
1014
|
+
performActions(actions: PointerActionSequence): Promise<void>;
|
|
814
1015
|
/** Capture the current screen as PNG bytes. */
|
|
815
1016
|
screenshotPng(): Promise<Buffer>;
|
|
816
1017
|
/**
|
|
@@ -1054,10 +1255,16 @@ interface IosAgentClient {
|
|
|
1054
1255
|
/** Replace an element's text (W3C `element/value`). */
|
|
1055
1256
|
setValue(elementId: string, text: string): Promise<void>;
|
|
1056
1257
|
getText(elementId: string): Promise<string | null>;
|
|
1258
|
+
/** True only when WDA reports the element is displayed in the current viewport. */
|
|
1259
|
+
isDisplayed(elementId: string): Promise<boolean>;
|
|
1057
1260
|
/** Send raw key sequences to the focused element (WDA `/wda/keys`). */
|
|
1058
1261
|
sendKeys(keys: string[]): Promise<void>;
|
|
1059
1262
|
/** Return to the springboard home screen (WDA `/wda/homescreen`). */
|
|
1060
1263
|
homescreen(): Promise<void>;
|
|
1264
|
+
/** Current screen size in points (WDA `/window/size`), for gesture geometry. */
|
|
1265
|
+
windowSize(): Promise<ScreenSize>;
|
|
1266
|
+
/** Perform a W3C pointer action sequence (WDA `POST /session/:id/actions`). */
|
|
1267
|
+
performActions(actions: PointerActionSequence): Promise<void>;
|
|
1061
1268
|
/**
|
|
1062
1269
|
* Return the current UI hierarchy as WebDriverAgent `/source` XML. Present on
|
|
1063
1270
|
* live clients and consumed by the analyzer (PROWL-061); optional so lighter
|
|
@@ -1359,7 +1566,9 @@ declare function createWdaAgentClient(transport: WdaTransport, sessionId: string
|
|
|
1359
1566
|
* Step types that only make sense on the web target. Everything else
|
|
1360
1567
|
* (`click`, `fill`, `type`, `press`, `wait`, `assert visible/notVisible`,
|
|
1361
1568
|
* `screenshot`, `assertScreenshot`, `repeat`, `runHunt`, `if`, `copyText`,
|
|
1362
|
-
* `hover`, `scrollTo`, `waitForSelector`) is portable across targets.
|
|
1569
|
+
* `hover`, `scrollTo`, `waitForSelector`) is portable across targets. The
|
|
1570
|
+
* directional `scroll` step is the one per-target exception — see
|
|
1571
|
+
* {@link MACOS_UNSUPPORTED_STEP_TYPES}.
|
|
1363
1572
|
*/
|
|
1364
1573
|
declare const WEB_ONLY_STEP_TYPES: ReadonlySet<string>;
|
|
1365
1574
|
/** The web-only reason a step is unsupported on a non-web target, or null if portable. */
|
|
@@ -1367,8 +1576,10 @@ declare function webOnlyReason(step: Step): string | null;
|
|
|
1367
1576
|
/**
|
|
1368
1577
|
* Throw if any step in `steps` (recursing into `if`/`repeat` bodies) is not
|
|
1369
1578
|
* supported by `target`. `runHunt` references are validated when the referenced
|
|
1370
|
-
* hunt itself runs. No-op for the web target; every native target
|
|
1371
|
-
*
|
|
1579
|
+
* hunt itself runs. No-op for the web target; every native target rejects the
|
|
1580
|
+
* same web-only step vocabulary, and macOS additionally rejects the directional
|
|
1581
|
+
* `scroll` swipe (no AX equivalent) — but NOT `scrollTo`, which macOS maps to
|
|
1582
|
+
* AXScrollToVisible just as iOS/Android map it to a swipe loop.
|
|
1372
1583
|
*/
|
|
1373
1584
|
declare function assertStepsSupportedByTarget(steps: Step[], target: Target["type"]): void;
|
|
1374
1585
|
/** Read the bundle id from an iOS `.app` (root `Info.plist`), or null. */
|
|
@@ -1705,24 +1916,24 @@ declare const configSchema: z.ZodObject<{
|
|
|
1705
1916
|
}>]>>;
|
|
1706
1917
|
}, "strip", z.ZodTypeAny, {
|
|
1707
1918
|
timeout?: number | undefined;
|
|
1708
|
-
headless?: boolean | undefined;
|
|
1709
|
-
slowMo?: number | undefined;
|
|
1710
|
-
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
1711
|
-
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1712
1919
|
viewport?: "mobile" | "tablet" | "desktop" | {
|
|
1713
1920
|
width: number;
|
|
1714
1921
|
height: number;
|
|
1715
1922
|
} | undefined;
|
|
1716
|
-
}, {
|
|
1717
|
-
timeout?: number | undefined;
|
|
1718
1923
|
headless?: boolean | undefined;
|
|
1719
1924
|
slowMo?: number | undefined;
|
|
1720
1925
|
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
1721
1926
|
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1927
|
+
}, {
|
|
1928
|
+
timeout?: number | undefined;
|
|
1722
1929
|
viewport?: "mobile" | "tablet" | "desktop" | {
|
|
1723
1930
|
width: number;
|
|
1724
1931
|
height: number;
|
|
1725
1932
|
} | undefined;
|
|
1933
|
+
headless?: boolean | undefined;
|
|
1934
|
+
slowMo?: number | undefined;
|
|
1935
|
+
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
1936
|
+
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1726
1937
|
}>>;
|
|
1727
1938
|
artifacts: z.ZodOptional<z.ZodObject<{
|
|
1728
1939
|
screenshots: z.ZodOptional<z.ZodEnum<["on-failure", "all"]>>;
|
|
@@ -1836,14 +2047,14 @@ declare const configSchema: z.ZodObject<{
|
|
|
1836
2047
|
};
|
|
1837
2048
|
browser?: {
|
|
1838
2049
|
timeout?: number | undefined;
|
|
1839
|
-
headless?: boolean | undefined;
|
|
1840
|
-
slowMo?: number | undefined;
|
|
1841
|
-
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
1842
|
-
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1843
2050
|
viewport?: "mobile" | "tablet" | "desktop" | {
|
|
1844
2051
|
width: number;
|
|
1845
2052
|
height: number;
|
|
1846
2053
|
} | undefined;
|
|
2054
|
+
headless?: boolean | undefined;
|
|
2055
|
+
slowMo?: number | undefined;
|
|
2056
|
+
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
2057
|
+
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1847
2058
|
} | undefined;
|
|
1848
2059
|
artifacts?: {
|
|
1849
2060
|
screenshots?: "on-failure" | "all" | undefined;
|
|
@@ -1901,14 +2112,14 @@ declare const configSchema: z.ZodObject<{
|
|
|
1901
2112
|
};
|
|
1902
2113
|
browser?: {
|
|
1903
2114
|
timeout?: number | undefined;
|
|
1904
|
-
headless?: boolean | undefined;
|
|
1905
|
-
slowMo?: number | undefined;
|
|
1906
|
-
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
1907
|
-
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1908
2115
|
viewport?: "mobile" | "tablet" | "desktop" | {
|
|
1909
2116
|
width: number;
|
|
1910
2117
|
height: number;
|
|
1911
2118
|
} | undefined;
|
|
2119
|
+
headless?: boolean | undefined;
|
|
2120
|
+
slowMo?: number | undefined;
|
|
2121
|
+
engine?: "chromium" | "firefox" | "webkit" | undefined;
|
|
2122
|
+
channel?: "chromium" | "chrome" | "chrome-beta" | "chrome-canary" | "chrome-dev" | "msedge" | "msedge-beta" | "msedge-canary" | "msedge-dev" | undefined;
|
|
1912
2123
|
} | undefined;
|
|
1913
2124
|
artifacts?: {
|
|
1914
2125
|
screenshots?: "on-failure" | "all" | undefined;
|
|
@@ -2454,4 +2665,4 @@ type GenerateOptions = {
|
|
|
2454
2665
|
};
|
|
2455
2666
|
declare function generateHunt(options: GenerateOptions): Promise<string>;
|
|
2456
2667
|
|
|
2457
|
-
export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type EvalScriptStep, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverBuildInstructions, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, selectDeviceSerial, selectSimulatorUdid, shortIosType, stepSchema, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason };
|
|
2668
|
+
export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type ArchiveLister, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type CodesignDetails, type CommandResult, type CommandRunner, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type DownloadOptions, type EvalScriptStep, type Extractor, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, HELPER_BINARY, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type InstallOptions, type InstallResult, type InstalledVersion, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACDRIVER_REPO, MACDRIVER_SIGNING_AUTHORITY_PREFIX, MACDRIVER_SIGNING_IDENTIFIER, MACDRIVER_VERSION, MACDRIVER_VERSION_PATTERN, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacdriverStatus, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveHelperOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SignatureVerifier, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type StatusOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type VersionProbe, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, codesignVerifier, collectMacdriverStatus, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, dittoExtractor, downloadAndVerify, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, installMacdriver, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverAssetName, macdriverAssetUrl, macdriverBuildInstructions, macdriverChecksumName, macdriverInstallRoot, macdriverInstalledBinary, macdriverReleaseTag, macdriverVersionDir, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseChecksumFile, parseCodesignDetails, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, runVersionProbe, selectDeviceSerial, selectSimulatorUdid, sha256Hex, shortIosType, stepSchema, tccGuidance, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, validateMacdriverArchiveEntries, validateMacdriverVersion, verifyMacdriverSignature, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason, zipinfoArchiveLister };
|
package/dist/lib.js
CHANGED
|
@@ -8,11 +8,17 @@ import {
|
|
|
8
8
|
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
9
9
|
DEFAULT_SIMULATOR_LOCK_ROOT,
|
|
10
10
|
DEFAULT_WDA_REQUEST_TIMEOUT_MS,
|
|
11
|
+
HELPER_BINARY,
|
|
11
12
|
INTERACTIVE_ROLES,
|
|
12
13
|
IOS_INTERACTIVE_TYPES,
|
|
13
14
|
IOS_MATCH_DIALECT,
|
|
14
15
|
IOS_PRESS_KEYS,
|
|
15
16
|
IOS_WINDOW_TYPE,
|
|
17
|
+
MACDRIVER_REPO,
|
|
18
|
+
MACDRIVER_SIGNING_AUTHORITY_PREFIX,
|
|
19
|
+
MACDRIVER_SIGNING_IDENTIFIER,
|
|
20
|
+
MACDRIVER_VERSION,
|
|
21
|
+
MACDRIVER_VERSION_PATTERN,
|
|
16
22
|
MACOS_MATCH_DIALECT,
|
|
17
23
|
NATIVE_ATTRIBUTE_MAP,
|
|
18
24
|
SpawnMacHelperClient,
|
|
@@ -42,6 +48,8 @@ import {
|
|
|
42
48
|
closeIosSession,
|
|
43
49
|
closeMacSession,
|
|
44
50
|
clusterFailures,
|
|
51
|
+
codesignVerifier,
|
|
52
|
+
collectMacdriverStatus,
|
|
45
53
|
computeFlakeScore,
|
|
46
54
|
createAndroidDriver,
|
|
47
55
|
createIosDriver,
|
|
@@ -54,6 +62,8 @@ import {
|
|
|
54
62
|
defaultAgentConnector,
|
|
55
63
|
defaultIosAgentConnector,
|
|
56
64
|
defaultWdaTestRunPreparer,
|
|
65
|
+
dittoExtractor,
|
|
66
|
+
downloadAndVerify,
|
|
57
67
|
escapePredicateArg,
|
|
58
68
|
escapeUiSelectorArg,
|
|
59
69
|
extractElementId,
|
|
@@ -63,7 +73,7 @@ import {
|
|
|
63
73
|
generateHunt,
|
|
64
74
|
healSelector,
|
|
65
75
|
injectUsePortIntoXctestrun,
|
|
66
|
-
|
|
76
|
+
installMacdriver,
|
|
67
77
|
iosAppAllowedIdentities,
|
|
68
78
|
iosNodeToNative,
|
|
69
79
|
iosQueryToLocator,
|
|
@@ -74,7 +84,14 @@ import {
|
|
|
74
84
|
launchMacSession,
|
|
75
85
|
listDevices,
|
|
76
86
|
listSimulators,
|
|
87
|
+
macdriverAssetName,
|
|
88
|
+
macdriverAssetUrl,
|
|
77
89
|
macdriverBuildInstructions,
|
|
90
|
+
macdriverChecksumName,
|
|
91
|
+
macdriverInstallRoot,
|
|
92
|
+
macdriverInstalledBinary,
|
|
93
|
+
macdriverReleaseTag,
|
|
94
|
+
macdriverVersionDir,
|
|
78
95
|
matchAndroidSelector,
|
|
79
96
|
matchIosSelector,
|
|
80
97
|
matchNativeTree,
|
|
@@ -84,6 +101,8 @@ import {
|
|
|
84
101
|
parseAdbDevices,
|
|
85
102
|
parseAndroidHierarchy,
|
|
86
103
|
parseAndroidSelector,
|
|
104
|
+
parseChecksumFile,
|
|
105
|
+
parseCodesignDetails,
|
|
87
106
|
parseForwardPort,
|
|
88
107
|
parseIosHierarchy,
|
|
89
108
|
parseIosSelector,
|
|
@@ -110,30 +129,38 @@ import {
|
|
|
110
129
|
resolveWdaTestRun,
|
|
111
130
|
runHunt,
|
|
112
131
|
runSuite,
|
|
132
|
+
runVersionProbe,
|
|
113
133
|
selectDeviceSerial,
|
|
114
134
|
selectSimulatorUdid,
|
|
135
|
+
sha256Hex,
|
|
115
136
|
shortIosType,
|
|
137
|
+
tccGuidance,
|
|
116
138
|
unquoteSelectorValue,
|
|
117
139
|
unwrapAndroidTextSelector,
|
|
118
140
|
unwrapIosTextSelector,
|
|
119
141
|
unwrapNativeTextSelector,
|
|
120
142
|
updateBacklogFromSuite,
|
|
143
|
+
validateMacdriverArchiveEntries,
|
|
144
|
+
validateMacdriverVersion,
|
|
145
|
+
verifyMacdriverSignature,
|
|
121
146
|
waitForAgentReady,
|
|
122
147
|
waitForWdaReady,
|
|
123
148
|
wdaCacheDir,
|
|
124
149
|
wdaTestRunArgs,
|
|
125
|
-
webOnlyReason
|
|
126
|
-
|
|
150
|
+
webOnlyReason,
|
|
151
|
+
zipinfoArchiveLister
|
|
152
|
+
} from "./chunk-CWLRDV5P.js";
|
|
127
153
|
import {
|
|
128
154
|
configSchema,
|
|
129
155
|
huntSchema,
|
|
156
|
+
interpolateHunt,
|
|
130
157
|
listHunts,
|
|
131
158
|
loadConfig,
|
|
132
159
|
loadHunt,
|
|
133
160
|
loadHuntMeta,
|
|
134
161
|
loadHuntTags,
|
|
135
162
|
stepSchema
|
|
136
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-JFJQNJSJ.js";
|
|
137
164
|
export {
|
|
138
165
|
ANDROID_INTERACTIVE_CLASSES,
|
|
139
166
|
ANDROID_KEYCODES,
|
|
@@ -144,11 +171,17 @@ export {
|
|
|
144
171
|
DEFAULT_REQUEST_TIMEOUT_MS,
|
|
145
172
|
DEFAULT_SIMULATOR_LOCK_ROOT,
|
|
146
173
|
DEFAULT_WDA_REQUEST_TIMEOUT_MS,
|
|
174
|
+
HELPER_BINARY,
|
|
147
175
|
INTERACTIVE_ROLES,
|
|
148
176
|
IOS_INTERACTIVE_TYPES,
|
|
149
177
|
IOS_MATCH_DIALECT,
|
|
150
178
|
IOS_PRESS_KEYS,
|
|
151
179
|
IOS_WINDOW_TYPE,
|
|
180
|
+
MACDRIVER_REPO,
|
|
181
|
+
MACDRIVER_SIGNING_AUTHORITY_PREFIX,
|
|
182
|
+
MACDRIVER_SIGNING_IDENTIFIER,
|
|
183
|
+
MACDRIVER_VERSION,
|
|
184
|
+
MACDRIVER_VERSION_PATTERN,
|
|
152
185
|
MACOS_MATCH_DIALECT,
|
|
153
186
|
NATIVE_ATTRIBUTE_MAP,
|
|
154
187
|
SpawnMacHelperClient,
|
|
@@ -178,6 +211,8 @@ export {
|
|
|
178
211
|
closeIosSession,
|
|
179
212
|
closeMacSession,
|
|
180
213
|
clusterFailures,
|
|
214
|
+
codesignVerifier,
|
|
215
|
+
collectMacdriverStatus,
|
|
181
216
|
computeFlakeScore,
|
|
182
217
|
configSchema,
|
|
183
218
|
createAndroidDriver,
|
|
@@ -191,6 +226,8 @@ export {
|
|
|
191
226
|
defaultAgentConnector,
|
|
192
227
|
defaultIosAgentConnector,
|
|
193
228
|
defaultWdaTestRunPreparer,
|
|
229
|
+
dittoExtractor,
|
|
230
|
+
downloadAndVerify,
|
|
194
231
|
escapePredicateArg,
|
|
195
232
|
escapeUiSelectorArg,
|
|
196
233
|
extractElementId,
|
|
@@ -201,6 +238,7 @@ export {
|
|
|
201
238
|
healSelector,
|
|
202
239
|
huntSchema,
|
|
203
240
|
injectUsePortIntoXctestrun,
|
|
241
|
+
installMacdriver,
|
|
204
242
|
interpolateHunt,
|
|
205
243
|
iosAppAllowedIdentities,
|
|
206
244
|
iosNodeToNative,
|
|
@@ -217,7 +255,14 @@ export {
|
|
|
217
255
|
loadHunt,
|
|
218
256
|
loadHuntMeta,
|
|
219
257
|
loadHuntTags,
|
|
258
|
+
macdriverAssetName,
|
|
259
|
+
macdriverAssetUrl,
|
|
220
260
|
macdriverBuildInstructions,
|
|
261
|
+
macdriverChecksumName,
|
|
262
|
+
macdriverInstallRoot,
|
|
263
|
+
macdriverInstalledBinary,
|
|
264
|
+
macdriverReleaseTag,
|
|
265
|
+
macdriverVersionDir,
|
|
221
266
|
matchAndroidSelector,
|
|
222
267
|
matchIosSelector,
|
|
223
268
|
matchNativeTree,
|
|
@@ -227,6 +272,8 @@ export {
|
|
|
227
272
|
parseAdbDevices,
|
|
228
273
|
parseAndroidHierarchy,
|
|
229
274
|
parseAndroidSelector,
|
|
275
|
+
parseChecksumFile,
|
|
276
|
+
parseCodesignDetails,
|
|
230
277
|
parseForwardPort,
|
|
231
278
|
parseIosHierarchy,
|
|
232
279
|
parseIosSelector,
|
|
@@ -253,19 +300,26 @@ export {
|
|
|
253
300
|
resolveWdaTestRun,
|
|
254
301
|
runHunt,
|
|
255
302
|
runSuite,
|
|
303
|
+
runVersionProbe,
|
|
256
304
|
selectDeviceSerial,
|
|
257
305
|
selectSimulatorUdid,
|
|
306
|
+
sha256Hex,
|
|
258
307
|
shortIosType,
|
|
259
308
|
stepSchema,
|
|
309
|
+
tccGuidance,
|
|
260
310
|
unquoteSelectorValue,
|
|
261
311
|
unwrapAndroidTextSelector,
|
|
262
312
|
unwrapIosTextSelector,
|
|
263
313
|
unwrapNativeTextSelector,
|
|
264
314
|
updateBacklogFromSuite,
|
|
315
|
+
validateMacdriverArchiveEntries,
|
|
316
|
+
validateMacdriverVersion,
|
|
317
|
+
verifyMacdriverSignature,
|
|
265
318
|
waitForAgentReady,
|
|
266
319
|
waitForWdaReady,
|
|
267
320
|
wdaCacheDir,
|
|
268
321
|
wdaTestRunArgs,
|
|
269
|
-
webOnlyReason
|
|
322
|
+
webOnlyReason,
|
|
323
|
+
zipinfoArchiveLister
|
|
270
324
|
};
|
|
271
325
|
//# sourceMappingURL=lib.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
loadHuntTags,
|
|
11
11
|
resolveViewport,
|
|
12
12
|
warnLegacyConfigDir
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JFJQNJSJ.js";
|
|
14
14
|
export {
|
|
15
15
|
CONFIG_DIR,
|
|
16
16
|
LEGACY_CONFIG_DIR,
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
resolveViewport,
|
|
25
25
|
warnLegacyConfigDir
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=loader-
|
|
27
|
+
//# sourceMappingURL=loader-JTHA4BYG.js.map
|
package/examples/hunts/hello.yml
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Login Flow
|
|
2
|
+
# ---
|
|
3
|
+
# Pattern: Authentication — email/password login with redirect verification
|
|
4
|
+
# What it tests: Fill credentials, submit, verify redirect to dashboard.
|
|
5
|
+
# Customize:
|
|
6
|
+
# - Update the selectors and URL paths to match your app's login page
|
|
7
|
+
# - Store credentials in .prowl/.env and reference them with {{VAR}}
|
|
8
|
+
#
|
|
9
|
+
# Tip: Use `prowl login` to capture auth state so other hunts can skip login.
|
|
10
|
+
|
|
11
|
+
name: login-flow
|
|
12
|
+
description: Log in with email and password, verify redirect to dashboard
|
|
13
|
+
|
|
14
|
+
tags:
|
|
15
|
+
- auth
|
|
16
|
+
- login
|
|
17
|
+
- credentials
|
|
18
|
+
|
|
19
|
+
# Store secrets in .prowl/.env — they'll be redacted in reports automatically.
|
|
20
|
+
# Example .env:
|
|
21
|
+
# TEST_EMAIL=user@example.com
|
|
22
|
+
# TEST_PASSWORD=secret123
|
|
23
|
+
vars:
|
|
24
|
+
EMAIL: "{{TEST_EMAIL}}"
|
|
25
|
+
PASSWORD: "{{TEST_PASSWORD}}"
|
|
26
|
+
|
|
27
|
+
steps:
|
|
28
|
+
- navigate: "/login"
|
|
29
|
+
|
|
30
|
+
# Shorthand fill — Prowl finds the input by its label or placeholder text.
|
|
31
|
+
# Equivalent explicit form:
|
|
32
|
+
# fill:
|
|
33
|
+
# selector: "input[placeholder='Email']"
|
|
34
|
+
# value: "{{EMAIL}}"
|
|
35
|
+
- fill:
|
|
36
|
+
"Email": "{{EMAIL}}"
|
|
37
|
+
|
|
38
|
+
- fill:
|
|
39
|
+
"Password": "{{PASSWORD}}"
|
|
40
|
+
|
|
41
|
+
# Shorthand click — Prowl finds a button by its text content.
|
|
42
|
+
# Equivalent explicit form:
|
|
43
|
+
# click:
|
|
44
|
+
# selector: "button:has-text('Sign In')"
|
|
45
|
+
- click: "Sign In"
|
|
46
|
+
|
|
47
|
+
# Wait for navigation to complete after login
|
|
48
|
+
- waitForUrl:
|
|
49
|
+
value: "/dashboard"
|
|
50
|
+
timeout: 10000
|
|
51
|
+
|
|
52
|
+
# Mid-flow assertion — verify the dashboard loaded
|
|
53
|
+
- assert:
|
|
54
|
+
visible: "Dashboard"
|
|
55
|
+
|
|
56
|
+
assertions:
|
|
57
|
+
- urlIncludes: "/dashboard"
|
|
58
|
+
- noConsoleErrors: true
|