@craft-native/ios 0.0.416 → 0.0.418
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/dist/index.js
CHANGED
|
@@ -317,9 +317,14 @@ function serializeSimulatorSteps(steps) {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
arg = JSON.stringify(step.paths);
|
|
320
|
-
} else if ("step" in step)
|
|
321
|
-
|
|
322
|
-
|
|
320
|
+
} else if ("step" in step) {
|
|
321
|
+
if (step.command === "iftext") {
|
|
322
|
+
if (!step.text.trim() || step.text.includes("|") || /[\r\n]/.test(step.text))
|
|
323
|
+
throw new Error("iftext needs one line of text without |");
|
|
324
|
+
arg = `${step.text} | ${line(step.step)}`;
|
|
325
|
+
} else
|
|
326
|
+
arg = `${token(step.id)} ${line(step.step)}`;
|
|
327
|
+
} else if ("seconds" in step && !("text" in step))
|
|
323
328
|
arg = String(number(step.seconds));
|
|
324
329
|
else if ("milliseconds" in step)
|
|
325
330
|
arg = String(number(step.milliseconds));
|
package/dist/testing.d.ts
CHANGED
|
@@ -111,6 +111,16 @@ export type SimulatorStep = {
|
|
|
111
111
|
command: 'ifid';
|
|
112
112
|
id: string;
|
|
113
113
|
step: SimulatorStep;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Runs `step` only when something on screen shows this text, for content
|
|
117
|
+
* without identifiers: a web page's optional field that appears with a
|
|
118
|
+
* checkbox ticked, say.
|
|
119
|
+
*/
|
|
120
|
+
| {
|
|
121
|
+
command: 'iftext';
|
|
122
|
+
text: string;
|
|
123
|
+
step: SimulatorStep;
|
|
114
124
|
};
|
|
115
125
|
/** Typed journeys use the same wire protocol as existing line-based scripts. */
|
|
116
126
|
export declare function serializeSimulatorSteps(steps: readonly SimulatorStep[]): string;
|
package/package.json
CHANGED
|
@@ -49,6 +49,7 @@ import Darwin
|
|
|
49
49
|
/// unlabelled logs every hittable button without a label (FAIL if any)
|
|
50
50
|
/// dismiss [label] a system prompt's button (default Not Now: "Save Password?")
|
|
51
51
|
/// ifid <id> <command…> runs the command only when that element is there (a screen shown the first time)
|
|
52
|
+
/// iftext <text> | <command…> runs the command only when something shows text (web content has no identifiers)
|
|
52
53
|
/// log <text>
|
|
53
54
|
///
|
|
54
55
|
/// With a bundled journey.txt, evidence is kept as native XCTest attachments
|
|
@@ -296,6 +297,12 @@ final class DriverTests: XCTestCase {
|
|
|
296
297
|
let rest = arg.split(separator: " ", maxSplits: 1).map(String.init)
|
|
297
298
|
if rest.count == 2, identified(rest[0]).waitForExistence(timeout: 3) { note("ifid \(rest[0]): shown"); run(rest[1]) }
|
|
298
299
|
else { note("ifid \(rest.first ?? ""): not shown") }
|
|
300
|
+
case "iftext":
|
|
301
|
+
guard let split = arg.range(of: " | ") else { check(false, "iftext needs text | command"); return }
|
|
302
|
+
let text = String(arg[..<split.lowerBound])
|
|
303
|
+
let guarded = String(arg[split.upperBound...])
|
|
304
|
+
if poll(3, { element(containing: text) }) != nil { note("iftext \(text): shown"); run(guarded) }
|
|
305
|
+
else { note("iftext \(text): not shown") }
|
|
299
306
|
case "launch": app.launch()
|
|
300
307
|
case "activate": app.activate()
|
|
301
308
|
case "terminate": app.terminate()
|