@m4l/testing 1.1.0 → 1.2.0
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/playwright/index.js
CHANGED
|
@@ -144,7 +144,7 @@ function ye(e = {}) {
|
|
|
144
144
|
...e
|
|
145
145
|
};
|
|
146
146
|
}
|
|
147
|
-
function
|
|
147
|
+
function Gt(e = {}) {
|
|
148
148
|
const {
|
|
149
149
|
disableSelectionAutofocus: t,
|
|
150
150
|
dummyPresetId: o,
|
|
@@ -178,7 +178,7 @@ function W(e = {}) {
|
|
|
178
178
|
...e
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
-
const
|
|
181
|
+
const v = {
|
|
182
182
|
locale: {
|
|
183
183
|
id: "en-US",
|
|
184
184
|
name: "English (United States)"
|
|
@@ -209,9 +209,9 @@ const h = {
|
|
|
209
209
|
currency_decimal_digits: 2
|
|
210
210
|
};
|
|
211
211
|
function be(e = {}) {
|
|
212
|
-
const t = e.locale ? { ...
|
|
212
|
+
const t = e.locale ? { ...v.locale, ...e.locale } : v.locale, o = e.time_zone ? { ...v.time_zone, ...e.time_zone } : v.time_zone, a = e.date_format ? { ...v.date_format, ...e.date_format } : v.date_format, i = e.time_format ? { ...v.time_format, ...e.time_format } : v.time_format;
|
|
213
213
|
return {
|
|
214
|
-
...
|
|
214
|
+
...v,
|
|
215
215
|
...e,
|
|
216
216
|
locale: t,
|
|
217
217
|
time_zone: o,
|
|
@@ -219,7 +219,7 @@ function be(e = {}) {
|
|
|
219
219
|
time_format: i
|
|
220
220
|
};
|
|
221
221
|
}
|
|
222
|
-
async function
|
|
222
|
+
async function jt(e, t, o) {
|
|
223
223
|
await e.attach(t, {
|
|
224
224
|
body: JSON.stringify(o, null, 2),
|
|
225
225
|
contentType: "application/json"
|
|
@@ -228,71 +228,72 @@ async function xt(e, t, o) {
|
|
|
228
228
|
function we(e) {
|
|
229
229
|
return e.getByRole("region", { name: "formContainer" });
|
|
230
230
|
}
|
|
231
|
-
function
|
|
231
|
+
function J(e, t) {
|
|
232
232
|
return we(e).locator(`[name="${t}"]`);
|
|
233
233
|
}
|
|
234
234
|
function he(e) {
|
|
235
235
|
return e.getByRole("group", { name: "actionsContainer" });
|
|
236
236
|
}
|
|
237
|
-
function
|
|
237
|
+
function $t(e, t) {
|
|
238
238
|
return e.getByRole("alert").filter({ hasText: t });
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function Vt(e) {
|
|
241
241
|
return e.getByRole("dialog");
|
|
242
242
|
}
|
|
243
|
-
function
|
|
243
|
+
function qt(e, t) {
|
|
244
244
|
return he(e).getByRole("button", { name: t });
|
|
245
245
|
}
|
|
246
|
-
async function
|
|
247
|
-
const { page: t, name: o, endpointPattern: a, search: i } = e, r =
|
|
246
|
+
async function Yt(e) {
|
|
247
|
+
const { page: t, name: o, endpointPattern: a, search: i } = e, r = J(t, o), s = t.waitForRequest(
|
|
248
248
|
(n) => n.method() === "GET" && a.test(n.url())
|
|
249
249
|
);
|
|
250
250
|
return await r.click(), i && await r.fill(i), s;
|
|
251
251
|
}
|
|
252
|
-
function
|
|
252
|
+
function Kt(e) {
|
|
253
253
|
return e.getByRole("listbox").getByRole("option");
|
|
254
254
|
}
|
|
255
|
-
async function
|
|
256
|
-
const { page: t, name: o, optionLabel: a, search: i } = e, r =
|
|
255
|
+
async function Wt(e) {
|
|
256
|
+
const { page: t, name: o, optionLabel: a, search: i } = e, r = J(t, o);
|
|
257
257
|
await r.click(), i && await r.fill(i);
|
|
258
258
|
const s = t.getByRole("listbox"), n = a ? s.getByRole("option", { name: a }).first() : s.getByRole("option").first();
|
|
259
259
|
await n.waitFor({ state: "visible" }), await n.click();
|
|
260
260
|
}
|
|
261
|
-
function
|
|
261
|
+
function Jt(e) {
|
|
262
262
|
return e.length === 0 ? "All checks passed." : e.map((t) => {
|
|
263
263
|
const o = t.actual === null ? "null" : String(t.actual);
|
|
264
264
|
return `${t.key}: expected ${String(t.threshold)}, received ${o}`;
|
|
265
265
|
}).join(`
|
|
266
266
|
`);
|
|
267
267
|
}
|
|
268
|
-
|
|
268
|
+
const ve = 800, _e = 1e4, ke = 100;
|
|
269
|
+
function _(e) {
|
|
269
270
|
return e.getByRole("grid");
|
|
270
271
|
}
|
|
271
|
-
function
|
|
272
|
-
return
|
|
272
|
+
function z(e) {
|
|
273
|
+
return _(e).locator(
|
|
273
274
|
'[role="row"]:has([role="gridcell"])'
|
|
274
275
|
);
|
|
275
276
|
}
|
|
276
|
-
function
|
|
277
|
-
return
|
|
277
|
+
function zt(e, t) {
|
|
278
|
+
return _(e).getByRole("gridcell", {
|
|
278
279
|
name: t,
|
|
279
280
|
exact: !0
|
|
280
281
|
});
|
|
281
282
|
}
|
|
282
283
|
function I(e, t = 0) {
|
|
283
|
-
return
|
|
284
|
+
return z(e).nth(t);
|
|
284
285
|
}
|
|
285
|
-
async function
|
|
286
|
+
async function Xt(e, t = 0) {
|
|
286
287
|
await I(e, t).getByRole("button", { name: "menu-actions" }).click();
|
|
287
288
|
}
|
|
288
|
-
async function
|
|
289
|
+
async function Qt(e, t = 0) {
|
|
289
290
|
await I(e, t).getByRole("gridcell").nth(1).dblclick();
|
|
290
291
|
}
|
|
291
|
-
async function
|
|
292
|
+
async function Zt(e, t = 0) {
|
|
292
293
|
await I(e, t).getByRole("gridcell").nth(1).click();
|
|
293
294
|
}
|
|
294
|
-
async function
|
|
295
|
-
const t =
|
|
295
|
+
async function eo(e) {
|
|
296
|
+
const t = _(e).locator(
|
|
296
297
|
'[role="gridcell"][aria-selected="true"]'
|
|
297
298
|
);
|
|
298
299
|
return await t.waitFor({ state: "visible" }), t.evaluate((o) => ({
|
|
@@ -303,24 +304,24 @@ async function Xt(e) {
|
|
|
303
304
|
}));
|
|
304
305
|
}
|
|
305
306
|
function X(e) {
|
|
306
|
-
return
|
|
307
|
+
return _(e).getByRole("button", {
|
|
307
308
|
name: /^header-column-button-/
|
|
308
309
|
});
|
|
309
310
|
}
|
|
310
|
-
const
|
|
311
|
+
const to = [
|
|
311
312
|
"toggle-freeze",
|
|
312
313
|
"hide-column"
|
|
313
314
|
];
|
|
314
315
|
function M(e) {
|
|
315
316
|
return ("mouse" in e ? e : e.page()).locator('[data-testid="PopoverRoot"]');
|
|
316
317
|
}
|
|
317
|
-
async function
|
|
318
|
-
await
|
|
318
|
+
async function oo(e, t) {
|
|
319
|
+
await _(e).getByRole("button", {
|
|
319
320
|
name: `header-column-button-${t}`,
|
|
320
321
|
exact: !0
|
|
321
322
|
}).click(), await M(e).waitFor({ state: "visible" });
|
|
322
323
|
}
|
|
323
|
-
async function
|
|
324
|
+
async function ao(e) {
|
|
324
325
|
const t = M(e).getByRole("menuitem");
|
|
325
326
|
return await t.first().waitFor({ state: "visible" }), t.evaluateAll(
|
|
326
327
|
(o) => o.map((a) => ({
|
|
@@ -329,18 +330,18 @@ async function eo(e) {
|
|
|
329
330
|
}))
|
|
330
331
|
);
|
|
331
332
|
}
|
|
332
|
-
async function
|
|
333
|
+
async function io(e, t) {
|
|
333
334
|
await M(e).getByRole("menuitem", { name: t, exact: !0 }).click();
|
|
334
335
|
}
|
|
335
|
-
async function
|
|
336
|
+
async function ro(e) {
|
|
336
337
|
await M(e).locator(".MuiBackdrop-root").click({ force: !0, position: { x: 5, y: 5 } }), await M(e).waitFor({ state: "detached" });
|
|
337
338
|
}
|
|
338
339
|
function Q(e, t) {
|
|
339
|
-
return
|
|
340
|
+
return _(e).locator(
|
|
340
341
|
`[role="columnheader"]:has([aria-label="header-column-button-${t}"])`
|
|
341
342
|
);
|
|
342
343
|
}
|
|
343
|
-
async function
|
|
344
|
+
async function Re(e, t) {
|
|
344
345
|
const o = Q(e, t);
|
|
345
346
|
await o.waitFor({ state: "visible" });
|
|
346
347
|
const a = await o.boundingBox();
|
|
@@ -348,23 +349,58 @@ async function ve(e, t) {
|
|
|
348
349
|
throw new Error(`Column "${t}" has no rendered box to measure.`);
|
|
349
350
|
return Math.round(a.width);
|
|
350
351
|
}
|
|
351
|
-
async function
|
|
352
|
+
async function so(e, t = {}) {
|
|
353
|
+
const {
|
|
354
|
+
stableForMs: o = ve,
|
|
355
|
+
timeoutMs: a = _e,
|
|
356
|
+
sampleIntervalMs: i = ke
|
|
357
|
+
} = t, r = _(e), s = r.getByRole("columnheader"), n = "mouse" in e ? e : e.page();
|
|
358
|
+
await r.waitFor({ state: "visible", timeout: a }), await s.first().waitFor({ state: "visible", timeout: a });
|
|
359
|
+
const d = Date.now() + a;
|
|
360
|
+
let u = "<no complete signature sampled>", g = null;
|
|
361
|
+
for (; Date.now() <= d; ) {
|
|
362
|
+
const y = await s.count(), m = [];
|
|
363
|
+
let p = y > 0;
|
|
364
|
+
for (let c = 0; c < y; c += 1) {
|
|
365
|
+
const f = await s.nth(c).boundingBox();
|
|
366
|
+
if (!f) {
|
|
367
|
+
p = !1;
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
m.push({ x: Math.round(f.x), width: Math.round(f.width) });
|
|
371
|
+
}
|
|
372
|
+
if (p) {
|
|
373
|
+
const c = JSON.stringify(m), f = Date.now();
|
|
374
|
+
if (c !== u)
|
|
375
|
+
u = c, g = f;
|
|
376
|
+
else if (g !== null && f - g >= o)
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
if (Date.now() > d)
|
|
380
|
+
break;
|
|
381
|
+
await n.waitForTimeout(i);
|
|
382
|
+
}
|
|
383
|
+
throw new Error(
|
|
384
|
+
`List datagrid layout did not settle within ${a} ms. Last signature: ${u}`
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
async function no(e, t, o) {
|
|
352
388
|
const a = "mouse" in e ? e : e.page(), i = Q(e, t);
|
|
353
389
|
await i.waitFor({ state: "visible" });
|
|
354
390
|
const r = await i.boundingBox();
|
|
355
391
|
if (!r)
|
|
356
392
|
throw new Error(`Column "${t}" has no rendered box to resize.`);
|
|
357
393
|
const s = r.x + r.width - 3, n = r.y + r.height / 2;
|
|
358
|
-
return await a.mouse.move(s, n), await a.mouse.down(), await a.mouse.move(s + o, n, { steps: 12 }), await a.mouse.up(),
|
|
394
|
+
return await a.mouse.move(s, n), await a.mouse.down(), await a.mouse.move(s + o, n, { steps: 12 }), await a.mouse.up(), Re(e, t);
|
|
359
395
|
}
|
|
360
|
-
async function
|
|
396
|
+
async function Ee(e) {
|
|
361
397
|
const t = X(e);
|
|
362
398
|
return await t.first().waitFor({ state: "visible" }), (await t.evaluateAll(
|
|
363
399
|
(a) => a.map((i) => i.getAttribute("aria-label") ?? "")
|
|
364
400
|
)).map((a) => a.replace("header-column-button-", ""));
|
|
365
401
|
}
|
|
366
|
-
async function
|
|
367
|
-
const t =
|
|
402
|
+
async function co(e) {
|
|
403
|
+
const t = _(e);
|
|
368
404
|
await t.waitFor({ state: "visible" });
|
|
369
405
|
const o = X(e);
|
|
370
406
|
await o.first().waitFor({ state: "visible" }), await t.evaluate(async (i) => {
|
|
@@ -388,9 +424,9 @@ async function io(e) {
|
|
|
388
424
|
for (const { key: s, align: n } of i)
|
|
389
425
|
s && !(s in a) && (a[s] = n);
|
|
390
426
|
if (await t.evaluate(async (s) => {
|
|
391
|
-
const n = s.scrollLeft,
|
|
392
|
-
return s.scrollTo({ left:
|
|
393
|
-
requestAnimationFrame(() =>
|
|
427
|
+
const n = s.scrollLeft, d = n + Math.max(s.clientWidth - 120, 120);
|
|
428
|
+
return s.scrollTo({ left: d, behavior: "instant" }), await new Promise((u) => {
|
|
429
|
+
requestAnimationFrame(() => u(null));
|
|
394
430
|
}), s.scrollLeft === n;
|
|
395
431
|
}))
|
|
396
432
|
break;
|
|
@@ -399,12 +435,12 @@ async function io(e) {
|
|
|
399
435
|
i.scrollTo({ left: 0, behavior: "instant" });
|
|
400
436
|
}), a;
|
|
401
437
|
}
|
|
402
|
-
async function
|
|
403
|
-
const t =
|
|
438
|
+
async function lo(e) {
|
|
439
|
+
const t = _(e);
|
|
404
440
|
await t.waitFor({ state: "visible" });
|
|
405
441
|
const o = [];
|
|
406
442
|
for (; ; ) {
|
|
407
|
-
for (const i of await
|
|
443
|
+
for (const i of await Ee(e))
|
|
408
444
|
o.includes(i) || o.push(i);
|
|
409
445
|
if (await t.evaluate(async (i) => {
|
|
410
446
|
const r = i.scrollLeft, s = r + Math.max(i.clientWidth - 120, 120);
|
|
@@ -418,35 +454,35 @@ async function ro(e) {
|
|
|
418
454
|
a.scrollTo({ left: 0, behavior: "instant" });
|
|
419
455
|
}), o;
|
|
420
456
|
}
|
|
421
|
-
async function
|
|
457
|
+
async function uo(e, t = 0) {
|
|
422
458
|
const o = e.locator('[data-testid="data-grid-card"], [data-testid="list-row"]').nth(t);
|
|
423
459
|
return await o.waitFor({ state: "attached" }), (await o.locator('[data-testid^="datagrid-field-"]').evaluateAll(
|
|
424
460
|
(r) => r.map((s) => s.getAttribute("data-testid") ?? "")
|
|
425
461
|
)).map((r) => r.replace("datagrid-field-", ""));
|
|
426
462
|
}
|
|
427
|
-
function
|
|
463
|
+
function po(e) {
|
|
428
464
|
return e.getByRole("alert", { name: "NoItemSelected" });
|
|
429
465
|
}
|
|
430
|
-
function
|
|
466
|
+
function mo(e, t) {
|
|
431
467
|
return e.getByRole("listitem").filter({ hasText: t }).last();
|
|
432
468
|
}
|
|
433
|
-
function
|
|
469
|
+
function Se(e, t) {
|
|
434
470
|
return e.getByRole("heading", { name: t });
|
|
435
471
|
}
|
|
436
|
-
async function
|
|
437
|
-
await
|
|
472
|
+
async function go(e, t) {
|
|
473
|
+
await Se(e, t).click();
|
|
438
474
|
}
|
|
439
|
-
function
|
|
475
|
+
function Te(e) {
|
|
440
476
|
return e.getByRole("region");
|
|
441
477
|
}
|
|
442
|
-
async function
|
|
443
|
-
const t =
|
|
478
|
+
async function yo(e) {
|
|
479
|
+
const t = Te(e);
|
|
444
480
|
await t.first().waitFor({ state: "visible" });
|
|
445
481
|
const o = t.getByRole("listitem");
|
|
446
482
|
return await o.first().waitFor({ state: "visible" }), (await o.allInnerTexts()).map((a) => a.split(`
|
|
447
483
|
`)[0].trim());
|
|
448
484
|
}
|
|
449
|
-
async function
|
|
485
|
+
async function fo(e) {
|
|
450
486
|
const { page: t, logsTabName: o, logsEndpointPattern: a } = e;
|
|
451
487
|
await t.getByRole("tab", { name: o }).click();
|
|
452
488
|
const i = t.waitForRequest(
|
|
@@ -460,7 +496,7 @@ async function G(e, t = 1) {
|
|
|
460
496
|
await e.press("ArrowDown");
|
|
461
497
|
await e.press("Enter");
|
|
462
498
|
}
|
|
463
|
-
async function
|
|
499
|
+
async function Ae(e, t) {
|
|
464
500
|
switch (t.type) {
|
|
465
501
|
case "string":
|
|
466
502
|
case "number": {
|
|
@@ -493,19 +529,19 @@ async function Ee(e, t) {
|
|
|
493
529
|
}
|
|
494
530
|
}
|
|
495
531
|
}
|
|
496
|
-
async function
|
|
532
|
+
async function Pe(e) {
|
|
497
533
|
const { page: t, scenario: o, endpointPattern: a } = e;
|
|
498
|
-
await t.getByRole("button", { name: "searchbox" }).first().click(), await t.getByRole("menuitem", { name: o.fieldLabel, exact: !0 }).click(), await
|
|
534
|
+
await t.getByRole("button", { name: "searchbox" }).first().click(), await t.getByRole("menuitem", { name: o.fieldLabel, exact: !0 }).click(), await Ae(t, o);
|
|
499
535
|
const i = t.waitForRequest(
|
|
500
536
|
(r) => a.test(r.url()) && /f\[\d+\]\[n\]=/.test(decodeURIComponent(r.url()))
|
|
501
537
|
);
|
|
502
538
|
return await t.getByRole("button", { name: "refresh", exact: !0 }).click(), i;
|
|
503
539
|
}
|
|
504
|
-
async function
|
|
540
|
+
async function bo(e) {
|
|
505
541
|
const { page: t, scenarios: o, endpointPattern: a } = e;
|
|
506
542
|
let i;
|
|
507
543
|
for (const r of o)
|
|
508
|
-
i = await
|
|
544
|
+
i = await Pe({
|
|
509
545
|
page: t,
|
|
510
546
|
scenario: r,
|
|
511
547
|
endpointPattern: a
|
|
@@ -516,16 +552,16 @@ async function mo(e) {
|
|
|
516
552
|
);
|
|
517
553
|
return i;
|
|
518
554
|
}
|
|
519
|
-
function
|
|
555
|
+
function wo(e) {
|
|
520
556
|
return [...decodeURIComponent(e.url()).matchAll(/f\[\d+\]\[n\]=([^&]+)/g)].map((o) => o[1]);
|
|
521
557
|
}
|
|
522
|
-
const
|
|
523
|
-
function
|
|
558
|
+
const ho = "master_applied_filters", vo = "master_applied_sorts";
|
|
559
|
+
function _o(e, t) {
|
|
524
560
|
return e.waitForRequest(
|
|
525
561
|
(o) => o.method() === "PUT" && new RegExp(`/cookies/.*${t}`).test(o.url())
|
|
526
562
|
);
|
|
527
563
|
}
|
|
528
|
-
async function
|
|
564
|
+
async function ko(e) {
|
|
529
565
|
const { page: t, scenario: o, endpointPattern: a } = e;
|
|
530
566
|
await t.getByRole("button", { name: `header-column-button-${o.columnKey}` }).click();
|
|
531
567
|
const i = t.waitForRequest(
|
|
@@ -533,11 +569,11 @@ async function wo(e) {
|
|
|
533
569
|
);
|
|
534
570
|
return await t.getByRole("menuitem", { name: "sort-descending" }).click(), i;
|
|
535
571
|
}
|
|
536
|
-
function
|
|
572
|
+
function Ro(e) {
|
|
537
573
|
return [...decodeURIComponent(e.url()).matchAll(/s\[\d+\]\[n\]=([^&]+)/g)].map((o) => o[1]);
|
|
538
574
|
}
|
|
539
575
|
const j = "datagrid-view-";
|
|
540
|
-
async function
|
|
576
|
+
async function Me(e) {
|
|
541
577
|
const t = e.locator(`[aria-label^="${j}"]`);
|
|
542
578
|
await t.first().waitFor({ state: "attached" });
|
|
543
579
|
const o = await t.first().getAttribute("aria-label"), a = o?.slice(j.length);
|
|
@@ -547,67 +583,67 @@ async function Te(e) {
|
|
|
547
583
|
);
|
|
548
584
|
return a;
|
|
549
585
|
}
|
|
550
|
-
async function
|
|
551
|
-
T(await
|
|
586
|
+
async function De(e, t) {
|
|
587
|
+
T(await Me(e)).toBe(t);
|
|
552
588
|
}
|
|
553
589
|
async function Z(e) {
|
|
554
590
|
await e.getByRole("button", { name: "view-mode" }).click();
|
|
555
591
|
}
|
|
556
|
-
async function
|
|
592
|
+
async function Eo(e) {
|
|
557
593
|
await Z(e);
|
|
558
594
|
const t = "keyboard" in e ? e : e.page(), o = [];
|
|
559
595
|
for (const a of ["table", "cards", "list"])
|
|
560
596
|
await t.locator(`[data-testid="toggle-button-${a}"]`).isVisible() && o.push(a);
|
|
561
|
-
return await
|
|
597
|
+
return await Le(e), o;
|
|
562
598
|
}
|
|
563
|
-
async function
|
|
599
|
+
async function Le(e) {
|
|
564
600
|
const t = "keyboard" in e ? e : e.page();
|
|
565
601
|
await t.keyboard.press("Escape"), await T(
|
|
566
602
|
t.locator('[data-testid="toggle-button-table"]')
|
|
567
603
|
).toBeHidden();
|
|
568
604
|
}
|
|
569
|
-
async function
|
|
570
|
-
await Z(e), await ("keyboard" in e ? e : e.page()).locator(`[data-testid="toggle-button-${t}"]`).click(), await
|
|
605
|
+
async function So(e, t) {
|
|
606
|
+
await Z(e), await ("keyboard" in e ? e : e.page()).locator(`[data-testid="toggle-button-${t}"]`).click(), await De(e, t);
|
|
571
607
|
}
|
|
572
|
-
async function
|
|
608
|
+
async function Oe(e) {
|
|
573
609
|
const t = "keyboard" in e ? e : e.page();
|
|
574
610
|
await e.locator('[data-testid="settings-button"]').click(), await T(
|
|
575
611
|
t.locator('[data-testid="data-grid-settings-intro"]')
|
|
576
612
|
).toBeVisible();
|
|
577
613
|
}
|
|
578
|
-
async function
|
|
614
|
+
async function To(e) {
|
|
579
615
|
const t = "keyboard" in e ? e : e.page();
|
|
580
|
-
await
|
|
616
|
+
await Oe(e), await t.getByRole("button", { name: "un check all" }).click(), await t.locator('[data-testid="data-grid-settings-intro"]').click(), await T(
|
|
581
617
|
t.locator('[data-testid="data-grid-settings-intro"]')
|
|
582
618
|
).toBeHidden();
|
|
583
619
|
}
|
|
584
|
-
function
|
|
585
|
-
return t === "table" ?
|
|
620
|
+
function Ao(e, t) {
|
|
621
|
+
return t === "table" ? z(e) : e.locator(
|
|
586
622
|
t === "cards" ? '[data-testid="data-grid-card"]' : '[data-testid="list-row"]'
|
|
587
623
|
);
|
|
588
624
|
}
|
|
589
|
-
const
|
|
590
|
-
async function
|
|
625
|
+
const Ce = "User avatar";
|
|
626
|
+
async function Po(e) {
|
|
591
627
|
const {
|
|
592
628
|
page: t,
|
|
593
629
|
moduleTitle: o,
|
|
594
|
-
accountButtonName: a =
|
|
630
|
+
accountButtonName: a = Ce
|
|
595
631
|
} = e;
|
|
596
632
|
await t.getByRole("button", { name: a }).click();
|
|
597
633
|
const i = t.getByRole("menuitem", { name: o, exact: !0 });
|
|
598
634
|
await T(i).toBeVisible(), await i.click();
|
|
599
635
|
}
|
|
600
|
-
const
|
|
601
|
-
async function
|
|
602
|
-
await e.getByRole("button", { name:
|
|
636
|
+
const Ie = "N_D:[appbar.tooltip_toogle_menu]";
|
|
637
|
+
async function Mo(e, t) {
|
|
638
|
+
await e.getByRole("button", { name: Ie }).click(), await e.getByRole("menuitem", { name: t, exact: !0 }).click();
|
|
603
639
|
}
|
|
604
|
-
const
|
|
605
|
-
function
|
|
640
|
+
const Fe = '[role="anchored-button"]', He = 100, $ = 15e3;
|
|
641
|
+
function Be(e, t, o) {
|
|
606
642
|
const a = e.getByRole("menuitem", { name: t, exact: o }).first(), i = o ? e.getByRole("menuitem", { name: t }).first() : a, r = e.getByText(t, { exact: o }).first();
|
|
607
643
|
return o ? [a, i, r] : [a, r];
|
|
608
644
|
}
|
|
609
645
|
async function V(e, t, o, a) {
|
|
610
|
-
const i = Date.now(), r =
|
|
646
|
+
const i = Date.now(), r = Be(e, t, o);
|
|
611
647
|
for (; Date.now() - i < a; ) {
|
|
612
648
|
for (const s of r)
|
|
613
649
|
try {
|
|
@@ -615,11 +651,11 @@ async function V(e, t, o, a) {
|
|
|
615
651
|
return s;
|
|
616
652
|
} catch {
|
|
617
653
|
}
|
|
618
|
-
await e.waitForTimeout(
|
|
654
|
+
await e.waitForTimeout(He);
|
|
619
655
|
}
|
|
620
656
|
return null;
|
|
621
657
|
}
|
|
622
|
-
async function
|
|
658
|
+
async function Ue(e, t, o, a) {
|
|
623
659
|
const i = await V(
|
|
624
660
|
e,
|
|
625
661
|
t,
|
|
@@ -646,49 +682,49 @@ async function Fe(e, t, o, a) {
|
|
|
646
682
|
toggleUsed: s > 0
|
|
647
683
|
};
|
|
648
684
|
}
|
|
649
|
-
async function
|
|
685
|
+
async function xe(e) {
|
|
650
686
|
const {
|
|
651
687
|
page: t,
|
|
652
688
|
moduleTitle: o,
|
|
653
689
|
exact: a = !0,
|
|
654
|
-
toggleSelector: i =
|
|
690
|
+
toggleSelector: i = Fe,
|
|
655
691
|
waitForModuleOpen: r,
|
|
656
692
|
maxClickAttempts: s = r ? 2 : 1
|
|
657
|
-
} = e, n = performance.now(),
|
|
693
|
+
} = e, n = performance.now(), d = performance.now(), { moduleMenuItem: u, toggleUsed: g } = await Ue(
|
|
658
694
|
t,
|
|
659
695
|
o,
|
|
660
696
|
a,
|
|
661
697
|
i
|
|
662
698
|
);
|
|
663
|
-
let
|
|
664
|
-
for (let
|
|
665
|
-
if (await T(
|
|
666
|
-
force:
|
|
699
|
+
let y = 0, m = null;
|
|
700
|
+
for (let p = 1; p <= s; p += 1) {
|
|
701
|
+
if (await T(u).toBeVisible(), await u.click({
|
|
702
|
+
force: g || p > 1,
|
|
667
703
|
timeout: 1e3
|
|
668
|
-
}),
|
|
704
|
+
}), p === 1 && (y = performance.now() - d), !r)
|
|
669
705
|
return {
|
|
670
|
-
clickAttempts:
|
|
671
|
-
directClickMs:
|
|
672
|
-
toggleUsed:
|
|
706
|
+
clickAttempts: p,
|
|
707
|
+
directClickMs: y,
|
|
708
|
+
toggleUsed: g,
|
|
673
709
|
totalMs: performance.now() - n
|
|
674
710
|
};
|
|
675
711
|
try {
|
|
676
|
-
return await r(t,
|
|
677
|
-
clickAttempts:
|
|
678
|
-
directClickMs:
|
|
679
|
-
toggleUsed:
|
|
712
|
+
return await r(t, p), {
|
|
713
|
+
clickAttempts: p,
|
|
714
|
+
directClickMs: y,
|
|
715
|
+
toggleUsed: g,
|
|
680
716
|
totalMs: performance.now() - n
|
|
681
717
|
};
|
|
682
|
-
} catch (
|
|
683
|
-
m =
|
|
718
|
+
} catch (c) {
|
|
719
|
+
m = c;
|
|
684
720
|
}
|
|
685
721
|
}
|
|
686
722
|
throw m instanceof Error ? m : new Error(`Expected the host sidebar module "${o}" to open after ${s} click attempt(s).`);
|
|
687
723
|
}
|
|
688
|
-
async function
|
|
689
|
-
return
|
|
724
|
+
async function Ne(e) {
|
|
725
|
+
return xe(e);
|
|
690
726
|
}
|
|
691
|
-
async function
|
|
727
|
+
async function Ge(e) {
|
|
692
728
|
const { page: t, count: o = 0 } = e;
|
|
693
729
|
await t.route("**/alarms/count**", async (a) => {
|
|
694
730
|
if (a.request().method() !== "GET") {
|
|
@@ -706,7 +742,7 @@ async function Ue(e) {
|
|
|
706
742
|
});
|
|
707
743
|
});
|
|
708
744
|
}
|
|
709
|
-
async function
|
|
745
|
+
async function je(e) {
|
|
710
746
|
const { page: t, areas: o = [K()] } = e;
|
|
711
747
|
await t.route("**/api/v1/**/areas", async (a) => {
|
|
712
748
|
if (a.request().method() !== "GET") {
|
|
@@ -720,7 +756,7 @@ async function xe(e) {
|
|
|
720
756
|
});
|
|
721
757
|
});
|
|
722
758
|
}
|
|
723
|
-
async function
|
|
759
|
+
async function $e(e) {
|
|
724
760
|
const { page: t, session: o, status: a = 200, delayMs: i = 0 } = e, r = de(o);
|
|
725
761
|
await t.route("**/api/v1/**/auth/login**", async (s) => {
|
|
726
762
|
if (s.request().method() !== "GET") {
|
|
@@ -737,14 +773,14 @@ async function Ne(e) {
|
|
|
737
773
|
function q(e) {
|
|
738
774
|
return `${e.container_id}::${e.id}`;
|
|
739
775
|
}
|
|
740
|
-
function
|
|
776
|
+
function Ve(e) {
|
|
741
777
|
const o = new URL(e).pathname.split("/cookies/")[1];
|
|
742
778
|
if (!o)
|
|
743
779
|
return null;
|
|
744
780
|
const [a, i] = o.split("/");
|
|
745
781
|
return !a || !i ? null : { containerId: a, cookieId: i };
|
|
746
782
|
}
|
|
747
|
-
async function
|
|
783
|
+
async function qe(e) {
|
|
748
784
|
const { page: t, cookies: o = [pe()] } = e, a = new Map(
|
|
749
785
|
o.map((i) => [q(i), { ...i }])
|
|
750
786
|
);
|
|
@@ -759,7 +795,7 @@ async function je(e) {
|
|
|
759
795
|
return;
|
|
760
796
|
}
|
|
761
797
|
if (r === "PUT" || r === "POST" || r === "PATCH") {
|
|
762
|
-
const s =
|
|
798
|
+
const s = Ve(i.request().url()), n = i.request().postDataJSON();
|
|
763
799
|
s && typeof n?.value == "string" && a.set(
|
|
764
800
|
q({
|
|
765
801
|
container_id: s.containerId,
|
|
@@ -804,8 +840,8 @@ async function ee(e) {
|
|
|
804
840
|
});
|
|
805
841
|
});
|
|
806
842
|
}
|
|
807
|
-
const
|
|
808
|
-
async function
|
|
843
|
+
const Ye = "1";
|
|
844
|
+
async function Ke(e) {
|
|
809
845
|
const { page: t, menuData: o = [], accountMenuData: a } = e;
|
|
810
846
|
await t.route("**/api/v1/**/menus**", async (i) => {
|
|
811
847
|
const r = i.request();
|
|
@@ -813,7 +849,7 @@ async function Ve(e) {
|
|
|
813
849
|
await i.fallback();
|
|
814
850
|
return;
|
|
815
851
|
}
|
|
816
|
-
const s = new URL(r.url()).searchParams.get("position"), n = a !== void 0 && s ===
|
|
852
|
+
const s = new URL(r.url()).searchParams.get("position"), n = a !== void 0 && s === Ye;
|
|
817
853
|
await i.fulfill({
|
|
818
854
|
status: 200,
|
|
819
855
|
contentType: "application/json",
|
|
@@ -840,7 +876,7 @@ async function F(e) {
|
|
|
840
876
|
});
|
|
841
877
|
});
|
|
842
878
|
}
|
|
843
|
-
async function
|
|
879
|
+
async function We(e) {
|
|
844
880
|
const { page: t, userPreferences: o, status: a = 200, delayMs: i = 0 } = e, r = {
|
|
845
881
|
data: be(o)
|
|
846
882
|
};
|
|
@@ -856,15 +892,15 @@ async function qe(e) {
|
|
|
856
892
|
});
|
|
857
893
|
});
|
|
858
894
|
}
|
|
859
|
-
const
|
|
895
|
+
const Je = `
|
|
860
896
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
|
861
897
|
<rect width="16" height="16" fill="#10233e" />
|
|
862
898
|
<circle cx="8" cy="8" r="4" fill="#f5f7fa" />
|
|
863
|
-
</svg>`,
|
|
899
|
+
</svg>`, ze = Buffer.from(
|
|
864
900
|
"R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",
|
|
865
901
|
"base64"
|
|
866
902
|
);
|
|
867
|
-
function
|
|
903
|
+
function Xe(e) {
|
|
868
904
|
return [
|
|
869
905
|
e.assetLogoUrl,
|
|
870
906
|
e.assetUserInterfaceLogoUrl,
|
|
@@ -878,13 +914,13 @@ function We(e) {
|
|
|
878
914
|
async function te(e) {
|
|
879
915
|
const { page: t, uiConfig: o } = e, a = W(o);
|
|
880
916
|
await Promise.all(
|
|
881
|
-
|
|
917
|
+
Xe(a).map(async (i) => {
|
|
882
918
|
await t.route(`**/api/v1/main/na/${i}`, async (r) => {
|
|
883
919
|
const s = i.endsWith(".svg");
|
|
884
920
|
await r.fulfill({
|
|
885
921
|
status: 200,
|
|
886
922
|
contentType: s ? "image/svg+xml" : "image/gif",
|
|
887
|
-
body: s ?
|
|
923
|
+
body: s ? Je : ze
|
|
888
924
|
});
|
|
889
925
|
});
|
|
890
926
|
})
|
|
@@ -894,19 +930,19 @@ async function oe(e) {
|
|
|
894
930
|
const { page: t, uiConfig: o, status: a = 200, delayMs: i = 0, responseGate: r } = e, s = "**/api/v1/main/na/ui-config/**", n = {
|
|
895
931
|
data: W(o)
|
|
896
932
|
};
|
|
897
|
-
await t.unroute(s), await t.route(s, async (
|
|
898
|
-
if (
|
|
899
|
-
await
|
|
933
|
+
await t.unroute(s), await t.route(s, async (d) => {
|
|
934
|
+
if (d.request().method() !== "GET") {
|
|
935
|
+
await d.fallback();
|
|
900
936
|
return;
|
|
901
937
|
}
|
|
902
|
-
r && await r, i > 0 && await new Promise((
|
|
938
|
+
r && await r, i > 0 && await new Promise((u) => setTimeout(u, i)), await d.fulfill({
|
|
903
939
|
status: a,
|
|
904
940
|
contentType: "application/json",
|
|
905
941
|
body: JSON.stringify(a >= 400 ? { error: { code: a, message: "UI config error" } } : n)
|
|
906
942
|
});
|
|
907
943
|
});
|
|
908
944
|
}
|
|
909
|
-
async function
|
|
945
|
+
async function Qe(e) {
|
|
910
946
|
const {
|
|
911
947
|
page: t,
|
|
912
948
|
moduleId: o,
|
|
@@ -915,46 +951,46 @@ async function ze(e) {
|
|
|
915
951
|
cookies: r,
|
|
916
952
|
locale: s,
|
|
917
953
|
menuData: n,
|
|
918
|
-
moduleDictionary:
|
|
919
|
-
session:
|
|
920
|
-
uiConfig:
|
|
921
|
-
uiConfigRouteOptions:
|
|
954
|
+
moduleDictionary: d,
|
|
955
|
+
session: u,
|
|
956
|
+
uiConfig: g,
|
|
957
|
+
uiConfigRouteOptions: y,
|
|
922
958
|
userPreferences: m
|
|
923
959
|
} = e;
|
|
924
960
|
await oe({
|
|
925
961
|
page: t,
|
|
926
|
-
uiConfig:
|
|
927
|
-
...
|
|
962
|
+
uiConfig: g,
|
|
963
|
+
...y
|
|
928
964
|
}), await te({
|
|
929
965
|
page: t,
|
|
930
|
-
uiConfig:
|
|
931
|
-
}), await
|
|
966
|
+
uiConfig: g
|
|
967
|
+
}), await $e({
|
|
932
968
|
page: t,
|
|
933
|
-
session:
|
|
969
|
+
session: u
|
|
934
970
|
}), await ee({
|
|
935
971
|
page: t,
|
|
936
972
|
locale: s
|
|
937
|
-
}), await
|
|
973
|
+
}), await We({
|
|
938
974
|
page: t,
|
|
939
975
|
userPreferences: m
|
|
940
976
|
}), await F({
|
|
941
977
|
page: t,
|
|
942
978
|
moduleId: o,
|
|
943
|
-
moduleDictionary:
|
|
979
|
+
moduleDictionary: d,
|
|
944
980
|
isAuth: !0
|
|
945
|
-
}), await
|
|
981
|
+
}), await je({
|
|
946
982
|
page: t,
|
|
947
983
|
areas: i
|
|
948
|
-
}), await
|
|
984
|
+
}), await qe({
|
|
949
985
|
page: t,
|
|
950
986
|
cookies: r
|
|
951
|
-
}), await
|
|
987
|
+
}), await Ke({
|
|
952
988
|
page: t,
|
|
953
989
|
menuData: n,
|
|
954
990
|
...a === void 0 ? {} : { accountMenuData: a }
|
|
955
991
|
});
|
|
956
992
|
}
|
|
957
|
-
const
|
|
993
|
+
const Ze = "platform", et = C({
|
|
958
994
|
data: {
|
|
959
995
|
module_name: "Platform Shell",
|
|
960
996
|
module_description: "Authenticated host shell baseline",
|
|
@@ -963,7 +999,7 @@ const Je = "platform", Xe = C({
|
|
|
963
999
|
label_db_type_operative: "Operative DB"
|
|
964
1000
|
}
|
|
965
1001
|
});
|
|
966
|
-
async function
|
|
1002
|
+
async function tt(e) {
|
|
967
1003
|
const {
|
|
968
1004
|
page: t,
|
|
969
1005
|
moduleId: o,
|
|
@@ -972,56 +1008,56 @@ async function Qe(e) {
|
|
|
972
1008
|
iconUrl: r,
|
|
973
1009
|
dynamicParams: s,
|
|
974
1010
|
uiConfig: n,
|
|
975
|
-
locale:
|
|
976
|
-
session:
|
|
977
|
-
userPreferences:
|
|
978
|
-
moduleDictionary:
|
|
1011
|
+
locale: d,
|
|
1012
|
+
session: u,
|
|
1013
|
+
userPreferences: g,
|
|
1014
|
+
moduleDictionary: y,
|
|
979
1015
|
areas: m,
|
|
980
|
-
cookies:
|
|
981
|
-
hostModuleId:
|
|
982
|
-
alarmCount:
|
|
1016
|
+
cookies: p,
|
|
1017
|
+
hostModuleId: c = Ze,
|
|
1018
|
+
alarmCount: f,
|
|
983
1019
|
menuPosition: A = "sidebar"
|
|
984
|
-
} = e,
|
|
1020
|
+
} = e, l = le({
|
|
985
1021
|
moduleId: o,
|
|
986
1022
|
title: a,
|
|
987
1023
|
debugPort: i,
|
|
988
1024
|
...r ? { iconUrl: r } : {},
|
|
989
1025
|
...s ? { dynamicParams: s } : {}
|
|
990
|
-
}),
|
|
991
|
-
await
|
|
1026
|
+
}), w = l.flatMap((h) => h.children ?? []), E = A === "account";
|
|
1027
|
+
await Qe({
|
|
992
1028
|
page: t,
|
|
993
|
-
moduleId:
|
|
1029
|
+
moduleId: c,
|
|
994
1030
|
uiConfig: n,
|
|
995
|
-
locale:
|
|
996
|
-
session:
|
|
997
|
-
userPreferences:
|
|
998
|
-
moduleDictionary:
|
|
1031
|
+
locale: d,
|
|
1032
|
+
session: u,
|
|
1033
|
+
userPreferences: g,
|
|
1034
|
+
moduleDictionary: y ?? et,
|
|
999
1035
|
areas: m,
|
|
1000
|
-
cookies:
|
|
1001
|
-
menuData: E ? [] :
|
|
1002
|
-
...E ? { accountMenuData:
|
|
1003
|
-
}), await
|
|
1036
|
+
cookies: p,
|
|
1037
|
+
menuData: E ? [] : l,
|
|
1038
|
+
...E ? { accountMenuData: w } : {}
|
|
1039
|
+
}), await Ge({
|
|
1004
1040
|
page: t,
|
|
1005
|
-
...
|
|
1041
|
+
...f === void 0 ? {} : { count: f }
|
|
1006
1042
|
});
|
|
1007
1043
|
}
|
|
1008
|
-
const
|
|
1009
|
-
function
|
|
1044
|
+
const ot = "hostRuntimeDummyPresetId", at = "hostRuntimeMode";
|
|
1045
|
+
function it(e, t) {
|
|
1010
1046
|
const o = typeof t?.dummyPresetId == "string" ? t.dummyPresetId.trim() : "";
|
|
1011
1047
|
if (!o)
|
|
1012
1048
|
return e;
|
|
1013
1049
|
const a = new URL(e, "https://host-preview.local");
|
|
1014
|
-
return o && (a.searchParams.set(
|
|
1050
|
+
return o && (a.searchParams.set(at, "dummy"), a.searchParams.set(ot, o)), `${a.pathname}${a.search}${a.hash}`;
|
|
1015
1051
|
}
|
|
1016
|
-
const
|
|
1017
|
-
async function
|
|
1052
|
+
const rt = 6e4, st = 2e3, nt = 250;
|
|
1053
|
+
async function ct(e) {
|
|
1018
1054
|
const { debugPort: t, page: o } = e, a = `https://localhost:${t}/`, i = Date.now();
|
|
1019
1055
|
let r = null;
|
|
1020
|
-
for (; Date.now() - i <
|
|
1056
|
+
for (; Date.now() - i < rt; ) {
|
|
1021
1057
|
try {
|
|
1022
1058
|
const s = await o.request.get(a, {
|
|
1023
1059
|
failOnStatusCode: !1,
|
|
1024
|
-
timeout:
|
|
1060
|
+
timeout: st
|
|
1025
1061
|
});
|
|
1026
1062
|
if (s.status() < 500)
|
|
1027
1063
|
return;
|
|
@@ -1031,13 +1067,13 @@ async function rt(e) {
|
|
|
1031
1067
|
} catch (s) {
|
|
1032
1068
|
r = s;
|
|
1033
1069
|
}
|
|
1034
|
-
await o.waitForTimeout(
|
|
1070
|
+
await o.waitForTimeout(nt);
|
|
1035
1071
|
}
|
|
1036
1072
|
throw new Error(
|
|
1037
1073
|
`Timed out waiting for preview debug port ${t} at ${a} to become ready.${r instanceof Error ? ` Last error: ${r.message}` : ""}`
|
|
1038
1074
|
);
|
|
1039
1075
|
}
|
|
1040
|
-
async function
|
|
1076
|
+
async function Do(e) {
|
|
1041
1077
|
const {
|
|
1042
1078
|
page: t,
|
|
1043
1079
|
moduleId: o,
|
|
@@ -1046,48 +1082,48 @@ async function To(e) {
|
|
|
1046
1082
|
iconUrl: r,
|
|
1047
1083
|
dynamicParams: s,
|
|
1048
1084
|
initialPath: n = "/",
|
|
1049
|
-
exact:
|
|
1050
|
-
toggleSelector:
|
|
1051
|
-
installPostMountRoutes:
|
|
1052
|
-
waitForModuleOpen:
|
|
1085
|
+
exact: d,
|
|
1086
|
+
toggleSelector: u,
|
|
1087
|
+
installPostMountRoutes: g,
|
|
1088
|
+
waitForModuleOpen: y,
|
|
1053
1089
|
maxSidebarClickAttempts: m,
|
|
1054
|
-
skipDebugPortReadyWait:
|
|
1055
|
-
...
|
|
1056
|
-
} = e,
|
|
1057
|
-
await
|
|
1090
|
+
skipDebugPortReadyWait: p = !1,
|
|
1091
|
+
...c
|
|
1092
|
+
} = e, f = it(n, s), A = performance.now(), l = performance.now();
|
|
1093
|
+
await tt({
|
|
1058
1094
|
page: t,
|
|
1059
1095
|
moduleId: o,
|
|
1060
1096
|
title: a,
|
|
1061
1097
|
debugPort: i,
|
|
1062
1098
|
...r ? { iconUrl: r } : {},
|
|
1063
1099
|
...s ? { dynamicParams: s } : {},
|
|
1064
|
-
...
|
|
1100
|
+
...c
|
|
1065
1101
|
});
|
|
1066
|
-
const
|
|
1067
|
-
await
|
|
1068
|
-
const
|
|
1069
|
-
|
|
1102
|
+
const w = performance.now() - l, E = performance.now();
|
|
1103
|
+
await g?.(t);
|
|
1104
|
+
const h = performance.now() - E;
|
|
1105
|
+
p || await ct({ debugPort: i, page: t });
|
|
1070
1106
|
const D = performance.now();
|
|
1071
|
-
await t.goto(
|
|
1072
|
-
const L = performance.now() - D, O = await
|
|
1107
|
+
await t.goto(f);
|
|
1108
|
+
const L = performance.now() - D, O = await Ne({
|
|
1073
1109
|
page: t,
|
|
1074
1110
|
moduleTitle: a,
|
|
1075
|
-
exact:
|
|
1111
|
+
exact: d,
|
|
1076
1112
|
maxClickAttempts: m,
|
|
1077
|
-
toggleSelector:
|
|
1078
|
-
waitForModuleOpen:
|
|
1113
|
+
toggleSelector: u,
|
|
1114
|
+
waitForModuleOpen: y
|
|
1079
1115
|
});
|
|
1080
1116
|
return {
|
|
1081
1117
|
gotoMs: L,
|
|
1082
|
-
installBootstrapMs:
|
|
1083
|
-
installPostMountRoutesMs:
|
|
1118
|
+
installBootstrapMs: w,
|
|
1119
|
+
installPostMountRoutesMs: h,
|
|
1084
1120
|
sidebarClickAttempts: O.clickAttempts,
|
|
1085
1121
|
sidebarOpenMs: O.totalMs,
|
|
1086
1122
|
sidebarToggleUsed: O.toggleUsed,
|
|
1087
1123
|
totalMs: performance.now() - A
|
|
1088
1124
|
};
|
|
1089
1125
|
}
|
|
1090
|
-
function
|
|
1126
|
+
function lt(e) {
|
|
1091
1127
|
return Object.freeze({
|
|
1092
1128
|
...e,
|
|
1093
1129
|
carrier: "symbol",
|
|
@@ -1095,7 +1131,7 @@ function st(e) {
|
|
|
1095
1131
|
symbol: Symbol.for(e.symbolId)
|
|
1096
1132
|
});
|
|
1097
1133
|
}
|
|
1098
|
-
function
|
|
1134
|
+
function b(e) {
|
|
1099
1135
|
return Object.freeze({
|
|
1100
1136
|
...e,
|
|
1101
1137
|
carrier: "globalThis",
|
|
@@ -1109,7 +1145,7 @@ function H(e) {
|
|
|
1109
1145
|
key: `window.${e.property}`
|
|
1110
1146
|
});
|
|
1111
1147
|
}
|
|
1112
|
-
const
|
|
1148
|
+
const dt = lt({
|
|
1113
1149
|
active: !0,
|
|
1114
1150
|
cleanup: "none",
|
|
1115
1151
|
codeRefs: [
|
|
@@ -1126,7 +1162,7 @@ const nt = st({
|
|
|
1126
1162
|
purpose: "Share one host-owned MF runtime error bridge across separately built bundles.",
|
|
1127
1163
|
stability: "internal",
|
|
1128
1164
|
symbolId: "m4l.layouts.mfRuntimeErrors"
|
|
1129
|
-
}),
|
|
1165
|
+
}), ut = b({
|
|
1130
1166
|
active: !0,
|
|
1131
1167
|
cleanup: "none",
|
|
1132
1168
|
codeRefs: [
|
|
@@ -1143,7 +1179,7 @@ const nt = st({
|
|
|
1143
1179
|
property: "__M4L_REALTIME_RUNTIMES__",
|
|
1144
1180
|
purpose: "Store the shared realtime runtime registry for the current browser session.",
|
|
1145
1181
|
stability: "internal"
|
|
1146
|
-
}), ae =
|
|
1182
|
+
}), ae = b({
|
|
1147
1183
|
active: !0,
|
|
1148
1184
|
cleanup: "none",
|
|
1149
1185
|
codeRefs: [
|
|
@@ -1162,7 +1198,7 @@ const nt = st({
|
|
|
1162
1198
|
property: "__M4L_REALTIME_PERFORMANCE__",
|
|
1163
1199
|
purpose: "Publish shared realtime performance counters and motion metrics for browser inspection.",
|
|
1164
1200
|
stability: "internal"
|
|
1165
|
-
}),
|
|
1201
|
+
}), pt = b({
|
|
1166
1202
|
active: !0,
|
|
1167
1203
|
cleanup: "none",
|
|
1168
1204
|
codeRefs: [
|
|
@@ -1180,7 +1216,7 @@ const nt = st({
|
|
|
1180
1216
|
property: "__M4L_REALTIME_TRANSPORT_DEBUG__",
|
|
1181
1217
|
purpose: "Expose recent Atmosphere lifecycle breadcrumbs for support debugging in host and isolation browser sessions.",
|
|
1182
1218
|
stability: "operator-facing"
|
|
1183
|
-
}),
|
|
1219
|
+
}), mt = H({
|
|
1184
1220
|
active: !0,
|
|
1185
1221
|
cleanup: "none",
|
|
1186
1222
|
codeRefs: [
|
|
@@ -1198,7 +1234,7 @@ const nt = st({
|
|
|
1198
1234
|
property: "__m4lObservabilitySmoke",
|
|
1199
1235
|
purpose: "Expose browser-console observability smoke helpers for host, preview, and isolation validation.",
|
|
1200
1236
|
stability: "operator-facing"
|
|
1201
|
-
}),
|
|
1237
|
+
}), gt = H({
|
|
1202
1238
|
active: !0,
|
|
1203
1239
|
cleanup: "on-unmount",
|
|
1204
1240
|
codeRefs: [
|
|
@@ -1215,7 +1251,7 @@ const nt = st({
|
|
|
1215
1251
|
property: "__m4lHostAlarmSmoke",
|
|
1216
1252
|
purpose: "Publish host alarm smoke helpers for manual badge and websocket validation.",
|
|
1217
1253
|
stability: "operator-facing"
|
|
1218
|
-
}),
|
|
1254
|
+
}), yt = b({
|
|
1219
1255
|
active: !0,
|
|
1220
1256
|
cleanup: "none",
|
|
1221
1257
|
codeRefs: [
|
|
@@ -1231,7 +1267,7 @@ const nt = st({
|
|
|
1231
1267
|
property: "__M4L_GPS_DEVICES_CLUSTER_POLICY__",
|
|
1232
1268
|
purpose: "Publish the latest device-cluster policy snapshot for browser debugging and probes.",
|
|
1233
1269
|
stability: "internal"
|
|
1234
|
-
}),
|
|
1270
|
+
}), ft = b({
|
|
1235
1271
|
active: !0,
|
|
1236
1272
|
cleanup: "manual",
|
|
1237
1273
|
codeRefs: [
|
|
@@ -1248,7 +1284,7 @@ const nt = st({
|
|
|
1248
1284
|
property: "__M4L_GPS_DEVICES_VIEWPORT_TRACE__",
|
|
1249
1285
|
purpose: "Store the current viewport trace buffer for manual debugging and browser probes.",
|
|
1250
1286
|
stability: "internal"
|
|
1251
|
-
}),
|
|
1287
|
+
}), bt = b({
|
|
1252
1288
|
active: !0,
|
|
1253
1289
|
cleanup: "manual",
|
|
1254
1290
|
codeRefs: [
|
|
@@ -1265,7 +1301,7 @@ const nt = st({
|
|
|
1265
1301
|
property: "__M4L_GPS_DEVICES_VIEWPORT_TRACE_ENABLED__",
|
|
1266
1302
|
purpose: "Toggle viewport trace publication for the current browser session.",
|
|
1267
1303
|
stability: "internal"
|
|
1268
|
-
}),
|
|
1304
|
+
}), wt = b({
|
|
1269
1305
|
active: !0,
|
|
1270
1306
|
cleanup: "manual",
|
|
1271
1307
|
codeRefs: [
|
|
@@ -1281,7 +1317,7 @@ const nt = st({
|
|
|
1281
1317
|
property: "__M4L_TEST_DEVICE_PANEL_HYDRATION_DRIVER__",
|
|
1282
1318
|
purpose: "Expose the device-panel hydration test driver for deterministic browser tests.",
|
|
1283
1319
|
stability: "test-only"
|
|
1284
|
-
}),
|
|
1320
|
+
}), ht = b({
|
|
1285
1321
|
active: !0,
|
|
1286
1322
|
cleanup: "manual",
|
|
1287
1323
|
codeRefs: [
|
|
@@ -1297,7 +1333,7 @@ const nt = st({
|
|
|
1297
1333
|
property: "__M4L_TEST_DOCUMENT_VISIBILITY_DRIVER__",
|
|
1298
1334
|
purpose: "Expose the document-visibility test driver for deterministic lifecycle tests.",
|
|
1299
1335
|
stability: "test-only"
|
|
1300
|
-
}),
|
|
1336
|
+
}), vt = b({
|
|
1301
1337
|
active: !0,
|
|
1302
1338
|
cleanup: "manual",
|
|
1303
1339
|
codeRefs: [
|
|
@@ -1314,7 +1350,7 @@ const nt = st({
|
|
|
1314
1350
|
property: "__M4L_TEST_VISIBILITY_SHIM__",
|
|
1315
1351
|
purpose: "Expose the hidden-tab resume visibility shim for deterministic Playwright probes.",
|
|
1316
1352
|
stability: "test-only"
|
|
1317
|
-
}),
|
|
1353
|
+
}), _t = b({
|
|
1318
1354
|
active: !0,
|
|
1319
1355
|
cleanup: "manual",
|
|
1320
1356
|
codeRefs: [
|
|
@@ -1331,7 +1367,7 @@ const nt = st({
|
|
|
1331
1367
|
property: "__M4L_TEST_DUMMY_PLAYBACK_SHIM__",
|
|
1332
1368
|
purpose: "Expose the hidden-tab resume dummy playback shim for deterministic Playwright probes.",
|
|
1333
1369
|
stability: "test-only"
|
|
1334
|
-
}),
|
|
1370
|
+
}), kt = b({
|
|
1335
1371
|
active: !0,
|
|
1336
1372
|
cleanup: "manual",
|
|
1337
1373
|
codeRefs: [
|
|
@@ -1348,7 +1384,7 @@ const nt = st({
|
|
|
1348
1384
|
property: "__M4L_NON_SELECTED_VIEWPORT_GATE_ZOOM_SETTLE__",
|
|
1349
1385
|
purpose: "Store the non-selected viewport-gate probe zoom settlement state for the current browser session.",
|
|
1350
1386
|
stability: "test-only"
|
|
1351
|
-
}),
|
|
1387
|
+
}), Rt = b({
|
|
1352
1388
|
active: !0,
|
|
1353
1389
|
cleanup: "manual",
|
|
1354
1390
|
codeRefs: [
|
|
@@ -1365,7 +1401,7 @@ const nt = st({
|
|
|
1365
1401
|
property: "__M4L_SPARSE_ROTATION_STATIONARY_WAIT__",
|
|
1366
1402
|
purpose: "Store the sparse-rotation stationary wait state for the current browser session.",
|
|
1367
1403
|
stability: "test-only"
|
|
1368
|
-
}),
|
|
1404
|
+
}), Et = b({
|
|
1369
1405
|
active: !0,
|
|
1370
1406
|
cleanup: "manual",
|
|
1371
1407
|
codeRefs: [
|
|
@@ -1381,7 +1417,7 @@ const nt = st({
|
|
|
1381
1417
|
property: "__M4L_TEST_DUMMY_PLAYBACK_DRIVER__",
|
|
1382
1418
|
purpose: "Expose the dummy realtime playback driver for deterministic browser probes and tests.",
|
|
1383
1419
|
stability: "test-only"
|
|
1384
|
-
}),
|
|
1420
|
+
}), St = H({
|
|
1385
1421
|
active: !0,
|
|
1386
1422
|
cleanup: "none",
|
|
1387
1423
|
codeRefs: [
|
|
@@ -1399,12 +1435,9 @@ const nt = st({
|
|
|
1399
1435
|
purpose: "Store the shared Google Maps loader state for the current browser window.",
|
|
1400
1436
|
stability: "internal"
|
|
1401
1437
|
}), B = [
|
|
1402
|
-
nt,
|
|
1403
|
-
ct,
|
|
1404
|
-
ae,
|
|
1405
|
-
lt,
|
|
1406
1438
|
dt,
|
|
1407
1439
|
ut,
|
|
1440
|
+
ae,
|
|
1408
1441
|
pt,
|
|
1409
1442
|
mt,
|
|
1410
1443
|
gt,
|
|
@@ -1415,9 +1448,12 @@ const nt = st({
|
|
|
1415
1448
|
ht,
|
|
1416
1449
|
vt,
|
|
1417
1450
|
_t,
|
|
1418
|
-
kt
|
|
1451
|
+
kt,
|
|
1452
|
+
Rt,
|
|
1453
|
+
Et,
|
|
1454
|
+
St
|
|
1419
1455
|
];
|
|
1420
|
-
function
|
|
1456
|
+
function Tt(e) {
|
|
1421
1457
|
const t = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
|
|
1422
1458
|
for (const a of e) {
|
|
1423
1459
|
if (t.has(a.id))
|
|
@@ -1427,7 +1463,7 @@ function Rt(e) {
|
|
|
1427
1463
|
o.add(a.key);
|
|
1428
1464
|
}
|
|
1429
1465
|
}
|
|
1430
|
-
|
|
1466
|
+
Tt(B);
|
|
1431
1467
|
Object.freeze(
|
|
1432
1468
|
Object.fromEntries(
|
|
1433
1469
|
B.map((e) => [e.id, e])
|
|
@@ -1438,14 +1474,14 @@ Object.freeze(
|
|
|
1438
1474
|
B.map((e) => [e.key, e])
|
|
1439
1475
|
)
|
|
1440
1476
|
);
|
|
1441
|
-
const
|
|
1477
|
+
const k = "gclick-frontend-diagnostic-policies", R = [
|
|
1442
1478
|
"moduleDefault",
|
|
1443
1479
|
"accountOverride"
|
|
1444
1480
|
], S = {
|
|
1445
1481
|
app: "gclick_host",
|
|
1446
1482
|
runtime: "web",
|
|
1447
1483
|
surface: "host"
|
|
1448
|
-
},
|
|
1484
|
+
}, At = {
|
|
1449
1485
|
diagnosticSmoke: {
|
|
1450
1486
|
active: !0,
|
|
1451
1487
|
codePaths: [
|
|
@@ -1462,10 +1498,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1462
1498
|
purpose: "Provide one deterministic browser-log smoke signal before support investigates a live issue.",
|
|
1463
1499
|
summary: "Manual host smoke proof for browser diagnostic-log delivery.",
|
|
1464
1500
|
remoteRule: {
|
|
1465
|
-
featureKey:
|
|
1501
|
+
featureKey: k,
|
|
1466
1502
|
payloadKey: "gclick_host.observability.diagnostic-smoke",
|
|
1467
1503
|
provider: "growthbook",
|
|
1468
|
-
supportedLayers:
|
|
1504
|
+
supportedLayers: R
|
|
1469
1505
|
}
|
|
1470
1506
|
},
|
|
1471
1507
|
realtimeConnectionRecovery: {
|
|
@@ -1481,10 +1517,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1481
1517
|
purpose: "Capture host websocket transport recovery evidence without waiting for a broader outage investigation.",
|
|
1482
1518
|
summary: "Host realtime reconnect recovery breadcrumbs.",
|
|
1483
1519
|
remoteRule: {
|
|
1484
|
-
featureKey:
|
|
1520
|
+
featureKey: k,
|
|
1485
1521
|
payloadKey: "gclick_host.realtime.connection-recovery",
|
|
1486
1522
|
provider: "growthbook",
|
|
1487
|
-
supportedLayers:
|
|
1523
|
+
supportedLayers: R
|
|
1488
1524
|
}
|
|
1489
1525
|
},
|
|
1490
1526
|
realtimeTransportLifecycle: {
|
|
@@ -1502,10 +1538,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1502
1538
|
purpose: "Capture host Atmosphere lifecycle breadcrumbs during temporary support investigations of reconnect storms and browser sleep recovery.",
|
|
1503
1539
|
summary: "Host Atmosphere transport lifecycle breadcrumbs.",
|
|
1504
1540
|
remoteRule: {
|
|
1505
|
-
featureKey:
|
|
1541
|
+
featureKey: k,
|
|
1506
1542
|
payloadKey: "gclick_host.realtime.transport-lifecycle",
|
|
1507
1543
|
provider: "growthbook",
|
|
1508
|
-
supportedLayers:
|
|
1544
|
+
supportedLayers: R
|
|
1509
1545
|
}
|
|
1510
1546
|
},
|
|
1511
1547
|
remoteDiagnosticProviderHealth: {
|
|
@@ -1578,10 +1614,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1578
1614
|
purpose: "Expose host-owned GrowthBook refresh breadcrumbs such as bootstrap, context, focus, visibility, poll, and queued refreshes.",
|
|
1579
1615
|
summary: "Host remote diagnostic-provider refresh debug breadcrumbs.",
|
|
1580
1616
|
remoteRule: {
|
|
1581
|
-
featureKey:
|
|
1617
|
+
featureKey: k,
|
|
1582
1618
|
payloadKey: "gclick_host.feature-flags.refresh-debug",
|
|
1583
1619
|
provider: "growthbook",
|
|
1584
|
-
supportedLayers:
|
|
1620
|
+
supportedLayers: R
|
|
1585
1621
|
}
|
|
1586
1622
|
}
|
|
1587
1623
|
}, P = {
|
|
@@ -1589,7 +1625,7 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1589
1625
|
moduleId: "operative_my_gps_devices",
|
|
1590
1626
|
runtime: "web",
|
|
1591
1627
|
surface: "mf"
|
|
1592
|
-
},
|
|
1628
|
+
}, Pt = {
|
|
1593
1629
|
deviceSelectionMissingPosition: {
|
|
1594
1630
|
active: !0,
|
|
1595
1631
|
codePaths: [
|
|
@@ -1603,10 +1639,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1603
1639
|
purpose: "Capture the user-visible branch where one selected device has no finite GNSS position and the map must skip focus safely.",
|
|
1604
1640
|
summary: "MF selection branch for devices without finite GNSS position.",
|
|
1605
1641
|
remoteRule: {
|
|
1606
|
-
featureKey:
|
|
1642
|
+
featureKey: k,
|
|
1607
1643
|
payloadKey: "operative_my_gps_devices.device-selection.missing-position",
|
|
1608
1644
|
provider: "growthbook",
|
|
1609
|
-
supportedLayers:
|
|
1645
|
+
supportedLayers: R
|
|
1610
1646
|
}
|
|
1611
1647
|
},
|
|
1612
1648
|
motionCapture: {
|
|
@@ -1626,10 +1662,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1626
1662
|
purpose: "Capture selected-device realtime ingress, motion-segment, and camera-follow evidence for support investigations.",
|
|
1627
1663
|
summary: "MF targeted motion-capture diagnostic family.",
|
|
1628
1664
|
remoteRule: {
|
|
1629
|
-
featureKey:
|
|
1665
|
+
featureKey: k,
|
|
1630
1666
|
payloadKey: "operative_my_gps_devices.motion.capture",
|
|
1631
1667
|
provider: "growthbook",
|
|
1632
|
-
supportedLayers:
|
|
1668
|
+
supportedLayers: R
|
|
1633
1669
|
}
|
|
1634
1670
|
},
|
|
1635
1671
|
realtimeTransportLifecycle: {
|
|
@@ -1647,10 +1683,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1647
1683
|
purpose: "Capture isolation Atmosphere lifecycle breadcrumbs during temporary support investigations of reconnect storms and browser sleep recovery.",
|
|
1648
1684
|
summary: "My GPS Devices isolation Atmosphere transport lifecycle breadcrumbs.",
|
|
1649
1685
|
remoteRule: {
|
|
1650
|
-
featureKey:
|
|
1686
|
+
featureKey: k,
|
|
1651
1687
|
payloadKey: "operative_my_gps_devices.realtime.transport-lifecycle",
|
|
1652
1688
|
provider: "growthbook",
|
|
1653
|
-
supportedLayers:
|
|
1689
|
+
supportedLayers: R
|
|
1654
1690
|
}
|
|
1655
1691
|
},
|
|
1656
1692
|
recoverableLeafletRuntime: {
|
|
@@ -1684,7 +1720,7 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1684
1720
|
moduleId: "shared_reports_list",
|
|
1685
1721
|
runtime: "web",
|
|
1686
1722
|
surface: "mf"
|
|
1687
|
-
},
|
|
1723
|
+
}, Mt = {
|
|
1688
1724
|
reportsDebug: {
|
|
1689
1725
|
active: !0,
|
|
1690
1726
|
codePaths: [
|
|
@@ -1703,10 +1739,10 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1703
1739
|
purpose: "Allow support-enabled sessions to remove the reports/types test-worker exclusion filter.",
|
|
1704
1740
|
summary: "Fallback product gate for the shared reports test report type.",
|
|
1705
1741
|
remoteRule: {
|
|
1706
|
-
featureKey:
|
|
1742
|
+
featureKey: k,
|
|
1707
1743
|
payloadKey: "shared_reports_list.feature-flags.reports-debug",
|
|
1708
1744
|
provider: "growthbook",
|
|
1709
|
-
supportedLayers:
|
|
1745
|
+
supportedLayers: R
|
|
1710
1746
|
}
|
|
1711
1747
|
},
|
|
1712
1748
|
remoteDiagnosticProviderHealth: {
|
|
@@ -1722,39 +1758,39 @@ const v = "gclick-frontend-diagnostic-policies", _ = [
|
|
|
1722
1758
|
purpose: "Report isolation remote diagnostic-provider outages even when report debug is disabled.",
|
|
1723
1759
|
summary: "MF isolation remote diagnostic-provider outage anomaly."
|
|
1724
1760
|
}
|
|
1725
|
-
},
|
|
1726
|
-
...Object.values(
|
|
1727
|
-
...Object.values(
|
|
1728
|
-
...Object.values(
|
|
1761
|
+
}, Dt = [
|
|
1762
|
+
...Object.values(At),
|
|
1763
|
+
...Object.values(Pt),
|
|
1764
|
+
...Object.values(Mt)
|
|
1729
1765
|
];
|
|
1730
1766
|
Object.fromEntries(
|
|
1731
|
-
|
|
1767
|
+
Dt.map((e) => [e.key, e])
|
|
1732
1768
|
);
|
|
1733
|
-
const
|
|
1734
|
-
function
|
|
1769
|
+
const Lo = ae.property;
|
|
1770
|
+
function Oo(e) {
|
|
1735
1771
|
return globalThis[e.realtimePerformanceProperty]?.motionMetrics?.motionAuthority ?? null;
|
|
1736
1772
|
}
|
|
1737
|
-
function
|
|
1773
|
+
function Co(e) {
|
|
1738
1774
|
const a = globalThis[e.realtimePerformanceProperty]?.motionMetrics?.motionAuthority?.markerContexts ?? {};
|
|
1739
1775
|
return e.deviceIds.every((i) => !!a[i]);
|
|
1740
1776
|
}
|
|
1741
|
-
function
|
|
1777
|
+
function Io(e) {
|
|
1742
1778
|
const t = globalThis, a = t[e.realtimePerformanceProperty]?.motionMetrics?.motionAuthority?.markerContexts?.[e.deviceId] ?? null, i = String(t.document?.body?.innerText ?? "");
|
|
1743
1779
|
return a?.selected === !0 || i.includes("Last Report");
|
|
1744
1780
|
}
|
|
1745
|
-
function
|
|
1781
|
+
function Fo(e) {
|
|
1746
1782
|
return (globalThis[e.realtimePerformanceProperty]?.motionMetrics?.motionAuthority?.markerContexts?.[e.deviceId] ?? null)?.selected === !0;
|
|
1747
1783
|
}
|
|
1748
|
-
async function
|
|
1784
|
+
async function Lt(e, t) {
|
|
1749
1785
|
const { arg: o, pageFunction: a, timeoutMs: i } = t;
|
|
1750
1786
|
return e.waitForFunction.bind(e)(a, o, { timeout: i }).then(() => !0).catch(() => !1);
|
|
1751
1787
|
}
|
|
1752
|
-
async function
|
|
1788
|
+
async function Ho(e, t) {
|
|
1753
1789
|
const { timeoutMessage: o, ...a } = t;
|
|
1754
|
-
if (!await
|
|
1790
|
+
if (!await Lt(e, a))
|
|
1755
1791
|
throw new Error(o);
|
|
1756
1792
|
}
|
|
1757
|
-
async function
|
|
1793
|
+
async function Bo(e) {
|
|
1758
1794
|
const { page: t, moduleId: o, ...a } = e;
|
|
1759
1795
|
await F({
|
|
1760
1796
|
page: t,
|
|
@@ -1763,7 +1799,7 @@ async function Co(e) {
|
|
|
1763
1799
|
moduleDictionary: ne(a)
|
|
1764
1800
|
});
|
|
1765
1801
|
}
|
|
1766
|
-
async function
|
|
1802
|
+
async function Ot(e) {
|
|
1767
1803
|
const { page: t, responseBody: o, status: a = 401 } = e, i = me(o);
|
|
1768
1804
|
await t.route("**/api/v1/**/auth/login**", async (r) => {
|
|
1769
1805
|
if (r.request().method() !== "GET") {
|
|
@@ -1777,7 +1813,7 @@ async function Mt(e) {
|
|
|
1777
1813
|
});
|
|
1778
1814
|
});
|
|
1779
1815
|
}
|
|
1780
|
-
async function
|
|
1816
|
+
async function Uo(e) {
|
|
1781
1817
|
const { page: t, moduleId: o, moduleDictionary: a, locale: i, uiConfig: r, uiConfigRouteOptions: s } = e;
|
|
1782
1818
|
await oe({
|
|
1783
1819
|
page: t,
|
|
@@ -1786,7 +1822,7 @@ async function Io(e) {
|
|
|
1786
1822
|
}), await te({
|
|
1787
1823
|
page: t,
|
|
1788
1824
|
uiConfig: r
|
|
1789
|
-
}), await
|
|
1825
|
+
}), await Ot({
|
|
1790
1826
|
page: t
|
|
1791
1827
|
}), await ee({
|
|
1792
1828
|
page: t,
|
|
@@ -1797,49 +1833,49 @@ async function Io(e) {
|
|
|
1797
1833
|
moduleDictionary: a
|
|
1798
1834
|
});
|
|
1799
1835
|
}
|
|
1800
|
-
const
|
|
1836
|
+
const Ct = {
|
|
1801
1837
|
data: "ok"
|
|
1802
|
-
},
|
|
1838
|
+
}, It = {
|
|
1803
1839
|
error: {
|
|
1804
1840
|
code: 4200,
|
|
1805
1841
|
message: "Password update failed"
|
|
1806
1842
|
}
|
|
1807
1843
|
};
|
|
1808
|
-
function
|
|
1809
|
-
return t || (e >= 400 ?
|
|
1844
|
+
function Ft(e, t) {
|
|
1845
|
+
return t || (e >= 400 ? It : Ct);
|
|
1810
1846
|
}
|
|
1811
|
-
async function
|
|
1847
|
+
async function xo(e) {
|
|
1812
1848
|
const { page: t, responseBody: o, status: a = 201, delayMs: i = 0 } = e;
|
|
1813
1849
|
await t.route("**/api/v1/*/auth/password/new", async (r) => {
|
|
1814
1850
|
i > 0 && await new Promise((s) => setTimeout(s, i)), await r.fulfill({
|
|
1815
1851
|
status: a,
|
|
1816
1852
|
contentType: "application/json",
|
|
1817
|
-
body: JSON.stringify(
|
|
1853
|
+
body: JSON.stringify(Ft(a, o))
|
|
1818
1854
|
});
|
|
1819
1855
|
});
|
|
1820
1856
|
}
|
|
1821
|
-
const
|
|
1857
|
+
const Ht = {
|
|
1822
1858
|
message: "Password reset email sent"
|
|
1823
|
-
},
|
|
1859
|
+
}, Bt = {
|
|
1824
1860
|
error: {
|
|
1825
1861
|
code: 4100,
|
|
1826
1862
|
message: "Password reset failed"
|
|
1827
1863
|
}
|
|
1828
1864
|
};
|
|
1829
|
-
function
|
|
1830
|
-
return t || (e >= 400 ?
|
|
1865
|
+
function Ut(e, t) {
|
|
1866
|
+
return t || (e >= 400 ? Bt : Ht);
|
|
1831
1867
|
}
|
|
1832
|
-
async function
|
|
1868
|
+
async function No(e) {
|
|
1833
1869
|
const { page: t, responseBody: o, status: a = 200, delayMs: i = 0 } = e;
|
|
1834
1870
|
await t.route("**/api/v1/*/auth/password/reset", async (r) => {
|
|
1835
1871
|
i > 0 && await new Promise((s) => setTimeout(s, i)), await r.fulfill({
|
|
1836
1872
|
status: a,
|
|
1837
1873
|
contentType: "application/json",
|
|
1838
|
-
body: JSON.stringify(
|
|
1874
|
+
body: JSON.stringify(Ut(a, o))
|
|
1839
1875
|
});
|
|
1840
1876
|
});
|
|
1841
1877
|
}
|
|
1842
|
-
async function
|
|
1878
|
+
async function Go(e) {
|
|
1843
1879
|
const {
|
|
1844
1880
|
page: t,
|
|
1845
1881
|
endpointPattern: o,
|
|
@@ -1856,7 +1892,7 @@ async function Bo(e) {
|
|
|
1856
1892
|
});
|
|
1857
1893
|
});
|
|
1858
1894
|
}
|
|
1859
|
-
async function
|
|
1895
|
+
async function jo(e) {
|
|
1860
1896
|
const { page: t, privileges: o, status: a = 200 } = e, i = Object.fromEntries(
|
|
1861
1897
|
o.map((r) => [r, !0])
|
|
1862
1898
|
);
|
|
@@ -1872,59 +1908,59 @@ async function Uo(e) {
|
|
|
1872
1908
|
});
|
|
1873
1909
|
});
|
|
1874
1910
|
}
|
|
1875
|
-
const
|
|
1876
|
-
async function
|
|
1911
|
+
const xt = "__m4lMicrofrontendRenderStubState";
|
|
1912
|
+
async function $o(e) {
|
|
1877
1913
|
const {
|
|
1878
1914
|
page: t,
|
|
1879
1915
|
moduleId: o,
|
|
1880
1916
|
prefix: a,
|
|
1881
1917
|
renderedText: i = `${o} microfrontend stub rendered.`,
|
|
1882
1918
|
renderedTestId: r = `mf-stub-${o}`,
|
|
1883
|
-
stateKey: s =
|
|
1919
|
+
stateKey: s = xt
|
|
1884
1920
|
} = e;
|
|
1885
1921
|
await t.addInitScript(
|
|
1886
|
-
({ moduleId: n, prefix:
|
|
1887
|
-
const m = window,
|
|
1922
|
+
({ moduleId: n, prefix: d, renderedText: u, renderedTestId: g, stateKey: y }) => {
|
|
1923
|
+
const m = window, p = m[y], c = p && typeof p == "object" ? p : {
|
|
1888
1924
|
mountCalls: [],
|
|
1889
1925
|
mountFailures: [],
|
|
1890
1926
|
renderCalls: [],
|
|
1891
1927
|
unmountCalls: []
|
|
1892
1928
|
};
|
|
1893
|
-
m[
|
|
1894
|
-
function
|
|
1895
|
-
const E = document.getElementById(
|
|
1929
|
+
m[y] = c, Array.isArray(c.mountCalls) || (c.mountCalls = []), Array.isArray(c.mountFailures) || (c.mountFailures = []);
|
|
1930
|
+
function f(l, w = window.performance.now() + 15e3) {
|
|
1931
|
+
const E = document.getElementById(l);
|
|
1896
1932
|
if (!E) {
|
|
1897
|
-
if (window.performance.now() >=
|
|
1898
|
-
|
|
1899
|
-
containerId:
|
|
1933
|
+
if (window.performance.now() >= w) {
|
|
1934
|
+
c.mountFailures.push({
|
|
1935
|
+
containerId: l,
|
|
1900
1936
|
moduleId: n
|
|
1901
1937
|
});
|
|
1902
1938
|
return;
|
|
1903
1939
|
}
|
|
1904
1940
|
window.setTimeout(() => {
|
|
1905
|
-
|
|
1941
|
+
f(l, w);
|
|
1906
1942
|
}, 50);
|
|
1907
1943
|
return;
|
|
1908
1944
|
}
|
|
1909
|
-
const
|
|
1910
|
-
|
|
1911
|
-
containerId:
|
|
1945
|
+
const h = document.createElement("section"), D = document.createElement("h2"), L = document.createElement("p");
|
|
1946
|
+
h.setAttribute("data-mf-module-id", n), h.setAttribute("data-mf-stub-root", n), h.setAttribute("data-testid", g), D.textContent = u, L.textContent = `Stub render contract satisfied for ${n}.`, h.replaceChildren(D, L), E.replaceChildren(h), c.mountCalls.push({
|
|
1947
|
+
containerId: l,
|
|
1912
1948
|
moduleId: n
|
|
1913
1949
|
});
|
|
1914
1950
|
}
|
|
1915
|
-
const A = (
|
|
1916
|
-
const
|
|
1917
|
-
|
|
1918
|
-
containerId:
|
|
1951
|
+
const A = (l) => {
|
|
1952
|
+
const w = typeof l.containerId == "string" ? l.containerId : "";
|
|
1953
|
+
c.renderCalls.push({
|
|
1954
|
+
containerId: w,
|
|
1919
1955
|
moduleId: n,
|
|
1920
|
-
debugPort:
|
|
1921
|
-
currentLocale: typeof
|
|
1922
|
-
emergeType:
|
|
1923
|
-
dynamicParams:
|
|
1924
|
-
}),
|
|
1956
|
+
debugPort: l.environment?.mfProps?.debugPort ?? null,
|
|
1957
|
+
currentLocale: typeof l.currentLocale == "string" ? l.currentLocale : l.currentLocale?.localeString ?? null,
|
|
1958
|
+
emergeType: l.emergeType ?? null,
|
|
1959
|
+
dynamicParams: l.dynamicMFStore?.getState?.().dynamicMFParameters ?? null
|
|
1960
|
+
}), w && f(w);
|
|
1925
1961
|
};
|
|
1926
|
-
m[`render_v2_${
|
|
1927
|
-
|
|
1962
|
+
m[`render_v2_${d}_${n}`] = A, m[`unmount_${d}_${n}`] = (l) => {
|
|
1963
|
+
c.unmountCalls.push(l), document.getElementById(l)?.replaceChildren();
|
|
1928
1964
|
};
|
|
1929
1965
|
},
|
|
1930
1966
|
{
|
|
@@ -1937,17 +1973,17 @@ async function xo(e) {
|
|
|
1937
1973
|
);
|
|
1938
1974
|
}
|
|
1939
1975
|
export {
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1976
|
+
Ie as HOST_MOBILE_NAV_TOGGLE_NAME,
|
|
1977
|
+
ho as LIST_FILTERS_STATE_COOKIE,
|
|
1978
|
+
to as LIST_HEADER_POPOVER_BASE_ACTIONS,
|
|
1979
|
+
vo as LIST_SORTS_STATE_COOKIE,
|
|
1980
|
+
Pe as applyListFilterAndCaptureRequest,
|
|
1981
|
+
bo as applyListFiltersAndCaptureRequest,
|
|
1982
|
+
ko as applyListSortAndCaptureRequest,
|
|
1983
|
+
jt as attachJson,
|
|
1984
|
+
io as clickListHeaderPopoverAction,
|
|
1985
|
+
ro as closeListHeaderPopover,
|
|
1986
|
+
Le as closeViewModeSwitcherDataGrid,
|
|
1951
1987
|
K as createHostAreaFixture,
|
|
1952
1988
|
le as createHostAuthenticatedMfMenuFixture,
|
|
1953
1989
|
ne as createHostAuthenticatedMfModuleDictionaryFixture,
|
|
@@ -1955,87 +1991,88 @@ export {
|
|
|
1955
1991
|
pe as createHostCookieFixture,
|
|
1956
1992
|
me as createHostGuestSessionFixture,
|
|
1957
1993
|
ye as createHostLocaleFixture,
|
|
1958
|
-
|
|
1994
|
+
Gt as createHostMfPreviewDynamicParamsFixture,
|
|
1959
1995
|
C as createHostModuleDictionaryFixture,
|
|
1960
1996
|
W as createHostUiConfigFixture,
|
|
1961
1997
|
be as createHostUserPreferencesFixture,
|
|
1962
1998
|
re as createListResponseFixture,
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1999
|
+
Qt as doubleClickListRow,
|
|
2000
|
+
De as expectViewModeDataGrid,
|
|
2001
|
+
Jt as formatFailedChecks,
|
|
2002
|
+
co as getAllColumnAlignmentsViewTableDataGrid,
|
|
2003
|
+
lo as getAllColumnKeysViewTableDataGrid,
|
|
2004
|
+
uo as getAllFieldKeysViewCardsOrListDataGrid,
|
|
2005
|
+
Eo as getAvailableViewModesDataGrid,
|
|
2006
|
+
eo as getFocusedCellPositionListDataGrid,
|
|
2007
|
+
qt as getFormActionButton,
|
|
1972
2008
|
he as getFormActionsContainer,
|
|
1973
|
-
|
|
2009
|
+
Vt as getFormConfirmDialog,
|
|
1974
2010
|
we as getFormContainer,
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
2011
|
+
J as getFormField,
|
|
2012
|
+
Kt as getFormSelectOptions,
|
|
2013
|
+
zt as getListCell,
|
|
1978
2014
|
Q as getListColumnHeader,
|
|
1979
2015
|
X as getListColumnHeaderButtons,
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
2016
|
+
Ee as getListColumnKeys,
|
|
2017
|
+
Re as getListColumnWidth,
|
|
2018
|
+
_ as getListDataGrid,
|
|
2019
|
+
z as getListDataRows,
|
|
2020
|
+
Se as getListDetailAccordion,
|
|
2021
|
+
Te as getListDetailAccordionRegions,
|
|
2022
|
+
po as getListDetailEmptyState,
|
|
2023
|
+
mo as getListDetailField,
|
|
2024
|
+
yo as getListDetailFieldLabels,
|
|
2025
|
+
wo as getListFilterFieldNames,
|
|
1990
2026
|
M as getListHeaderPopover,
|
|
1991
|
-
|
|
2027
|
+
ao as getListHeaderPopoverActions,
|
|
1992
2028
|
I as getListRow,
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2029
|
+
Ro as getListSortFieldNames,
|
|
2030
|
+
Ao as getRenderedRecordsDataGrid,
|
|
2031
|
+
$t as getToast,
|
|
2032
|
+
Me as getViewModeDataGrid,
|
|
2033
|
+
Co as hasRealtimeMarkerContexts,
|
|
2034
|
+
To as hideAllColumnsDataGrid,
|
|
2035
|
+
Ge as installHostAlarmsCountRoute,
|
|
2036
|
+
je as installHostAreasRoute,
|
|
2037
|
+
Qe as installHostAuthenticatedBootstrapRoutes,
|
|
2038
|
+
Bo as installHostAuthenticatedMfModuleDictionaryRoute,
|
|
2039
|
+
tt as installHostAuthenticatedMfPreviewBootstrap,
|
|
2040
|
+
$e as installHostAuthenticatedSessionRoute,
|
|
2041
|
+
qe as installHostCookiesRoute,
|
|
2042
|
+
Uo as installHostGuestBootstrapRoutes,
|
|
2043
|
+
Ot as installHostGuestSessionRoute,
|
|
2008
2044
|
ee as installHostLocaleRoute,
|
|
2009
|
-
|
|
2045
|
+
Ke as installHostMenusRoute,
|
|
2010
2046
|
F as installHostModuleDictionaryRoute,
|
|
2011
|
-
|
|
2012
|
-
|
|
2047
|
+
xo as installHostPasswordNewRoute,
|
|
2048
|
+
No as installHostPasswordResetRoute,
|
|
2013
2049
|
te as installHostUiConfigAssetRoutes,
|
|
2014
2050
|
oe as installHostUiConfigRoute,
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2051
|
+
We as installHostUserPreferencesRoute,
|
|
2052
|
+
Go as installListEndpointRoute,
|
|
2053
|
+
$o as installMicrofrontendRenderStub,
|
|
2054
|
+
jo as installModulePrivilegesRoute,
|
|
2055
|
+
Fo as isRealtimeDeviceSelected,
|
|
2056
|
+
Io as isRealtimeDeviceSelectedOrDebugPanelVisible,
|
|
2057
|
+
fo as loadListDetailLogsAndCaptureRequest,
|
|
2058
|
+
Oe as openColumnSettingsDataGrid,
|
|
2059
|
+
Yt as openFormSelectAndCaptureRequest,
|
|
2060
|
+
Po as openHostAccountMenuModule,
|
|
2061
|
+
Do as openHostAuthenticatedMfPreviewModule,
|
|
2062
|
+
Mo as openHostMobileSidebarModule,
|
|
2063
|
+
Ne as openHostSidebarModule,
|
|
2064
|
+
oo as openListHeaderPopover,
|
|
2065
|
+
Xt as openListRowActionsMenu,
|
|
2030
2066
|
Z as openViewModeSwitcherDataGrid,
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2067
|
+
Oo as readRealtimeMotionAuthorityState,
|
|
2068
|
+
Lo as realtimePerformanceDebugHandleProperty,
|
|
2069
|
+
no as resizeListColumn,
|
|
2070
|
+
Wt as selectFormOption,
|
|
2071
|
+
Zt as selectListRow,
|
|
2072
|
+
So as switchViewModeDataGrid,
|
|
2073
|
+
go as toggleListDetailAccordion,
|
|
2074
|
+
Lt as tryWaitForBrowserCondition,
|
|
2075
|
+
Ho as waitForBrowserCondition,
|
|
2076
|
+
so as waitForListDatagridLayoutSettled,
|
|
2077
|
+
_o as waitForListStatePersistence
|
|
2041
2078
|
};
|