Skip to content

Commit f24c075

Browse files
committed
Wait for fixture focus before JS typing
1 parent 2428684 commit f24c075

2 files changed

Lines changed: 22 additions & 5 deletions

File tree

scripts/integration/fixture.mjs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,15 @@ function fixtureSource() {
209209
210210
- (void)openFixtureURL:(NSURL *)url {
211211
if ([url.host isEqualToString:@"focus-message"]) {
212-
self.statusLabel.text = @"Message Focused";
213212
dispatch_async(dispatch_get_main_queue(), ^{
214213
[self.messageField becomeFirstResponder];
214+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(500 * NSEC_PER_MSEC)), dispatch_get_main_queue(), ^{
215+
if (self.messageField.isFirstResponder) {
216+
self.statusLabel.text = @"Message Focused";
217+
} else {
218+
self.statusLabel.text = @"Message Focus Failed";
219+
}
220+
});
215221
});
216222
} else {
217223
self.statusLabel.text = @"URL Opened";

scripts/integration/js-api.mjs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,16 @@ async function main() {
195195
await expectFixtureText("URL Opened");
196196
});
197197
await measuredStep("JS focus URL and type", async () => {
198+
await session.tapElement(
199+
simulatorUDID,
200+
{ id: "fixture.message" },
201+
{
202+
source: "native-ax",
203+
maxDepth: 3,
204+
waitTimeoutMs: 15_000,
205+
durationMs: 30,
206+
},
207+
);
198208
await retryAsync(
199209
async () => {
200210
await session.openUrl(simulatorUDID, fixtureFocusUrl);
@@ -204,6 +214,7 @@ async function main() {
204214
3,
205215
2_000,
206216
);
217+
await sleep(1_000);
207218
await session.batch(simulatorUDID, [
208219
{ action: "type", text: "agent-ready", delayMs: 12 },
209220
]);
@@ -292,12 +303,12 @@ async function main() {
292303
console.log("SimDeck JS API integration suite passed");
293304
}
294305

295-
async function expectFixtureText(text) {
296-
return expectElementContains({ id: "fixture.status" }, text);
306+
async function expectFixtureText(text, options = {}) {
307+
return expectElementContains({ id: "fixture.status" }, text, options);
297308
}
298309

299-
async function expectElementContains(selector, text) {
300-
const deadline = Date.now() + 5_000;
310+
async function expectElementContains(selector, text, options = {}) {
311+
const deadline = Date.now() + (options.timeoutMs ?? 15_000);
301312
let last = "";
302313
while (Date.now() < deadline) {
303314
const matches = await session.query(simulatorUDID, selector, {

0 commit comments

Comments
 (0)