@midscene/web 0.2.2-beta-20240809090814.0 → 0.2.2
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/es/index.js +65 -71
- package/dist/lib/index.js +65 -71
- package/dist/script/htmlElement.js +2 -2
- package/dist/script/types/htmlElement.d.ts +2 -2
- package/dist/types/index.d.ts +8 -5
- package/dist/visualizer-report/index.html +1 -1
- package/dist/visualizer-report/static/css/{index.eccd04e1.css → index.ce838015.css} +1 -1
- package/dist/visualizer-report/static/css/{index.eccd04e1.css.map → index.ce838015.css.map} +1 -1
- package/dist/visualizer-report/static/js/43.c54711bc.js +6 -0
- package/dist/visualizer-report/static/js/{160.5ac2287a.js.LICENSE.txt → 43.c54711bc.js.LICENSE.txt} +3 -1
- package/dist/visualizer-report/static/js/43.c54711bc.js.map +1 -0
- package/dist/visualizer-report/static/js/index.013f8b6a.js +1 -0
- package/dist/visualizer-report/static/js/index.013f8b6a.js.map +1 -0
- package/package.json +3 -3
- package/dist/visualizer-report/static/js/160.5ac2287a.js +0 -6
- package/dist/visualizer-report/static/js/160.5ac2287a.js.map +0 -1
- package/dist/visualizer-report/static/js/index.56e33cc4.js +0 -1
- package/dist/visualizer-report/static/js/index.56e33cc4.js.map +0 -1
package/dist/es/index.js
CHANGED
|
@@ -153,13 +153,17 @@ async function getElementInfosFromPage(page) {
|
|
|
153
153
|
assert(pathDir, `can't find pathDir, with ${__dirname}`);
|
|
154
154
|
const scriptPath = path.join(pathDir, "./dist/script/htmlElement.js");
|
|
155
155
|
const elementInfosScriptContent = readFileSync(scriptPath, "utf-8");
|
|
156
|
-
const extraReturnLogic = `${elementInfosScriptContent}midscene_element_inspector.
|
|
156
|
+
const extraReturnLogic = `${elementInfosScriptContent}midscene_element_inspector.extractTextWithPosition()`;
|
|
157
157
|
const captureElementSnapshot = await page.evaluate(extraReturnLogic);
|
|
158
158
|
return captureElementSnapshot;
|
|
159
159
|
}
|
|
160
|
+
var sizeThreshold = 3;
|
|
160
161
|
async function alignElements(screenshotBuffer, elements, page) {
|
|
161
162
|
const textsAligned = [];
|
|
162
|
-
|
|
163
|
+
const validElements = elements.filter((item) => {
|
|
164
|
+
return item.rect.height >= sizeThreshold && item.rect.width >= sizeThreshold;
|
|
165
|
+
});
|
|
166
|
+
for (const item of validElements) {
|
|
163
167
|
const { rect } = item;
|
|
164
168
|
const aligned = await alignCoordByTrim(screenshotBuffer, rect);
|
|
165
169
|
item.rect = aligned;
|
|
@@ -293,7 +297,8 @@ var PageTaskExecutor = class {
|
|
|
293
297
|
type: "Insight",
|
|
294
298
|
subType: "Assert",
|
|
295
299
|
param: assertPlan.param,
|
|
296
|
-
executor: async () => {
|
|
300
|
+
executor: async (param, taskContext) => {
|
|
301
|
+
const { task } = taskContext;
|
|
297
302
|
let insightDump;
|
|
298
303
|
const dumpCollector = (dump) => {
|
|
299
304
|
insightDump = dump;
|
|
@@ -302,6 +307,15 @@ var PageTaskExecutor = class {
|
|
|
302
307
|
const assertion = await this.insight.assert(
|
|
303
308
|
assertPlan.param.assertion
|
|
304
309
|
);
|
|
310
|
+
if (!assertion.pass) {
|
|
311
|
+
task.output = assertion;
|
|
312
|
+
task.log = {
|
|
313
|
+
dump: insightDump
|
|
314
|
+
};
|
|
315
|
+
throw new Error(
|
|
316
|
+
assertion.thought || "Assertion failed without reason"
|
|
317
|
+
);
|
|
318
|
+
}
|
|
305
319
|
return {
|
|
306
320
|
output: assertion,
|
|
307
321
|
log: {
|
|
@@ -467,29 +481,26 @@ var PageTaskExecutor = class {
|
|
|
467
481
|
};
|
|
468
482
|
}
|
|
469
483
|
};
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
this.executionDump = taskExecutor.dump();
|
|
478
|
-
assert2(
|
|
479
|
-
taskExecutor.status !== "error",
|
|
480
|
-
`failed to execute tasks: ${taskExecutor.status}, msg: ${taskExecutor.errorMsg || ""}`
|
|
481
|
-
);
|
|
482
|
-
} catch (e) {
|
|
483
|
-
this.executionDump = taskExecutor.dump();
|
|
484
|
-
const err = new Error(e.message, { cause: e });
|
|
485
|
-
throw err;
|
|
484
|
+
await taskExecutor.append(this.wrapExecutorWithScreenshot(planningTask));
|
|
485
|
+
let output = await taskExecutor.flush();
|
|
486
|
+
if (taskExecutor.isInErrorState()) {
|
|
487
|
+
return {
|
|
488
|
+
output,
|
|
489
|
+
executor: taskExecutor
|
|
490
|
+
};
|
|
486
491
|
}
|
|
492
|
+
const executables = await this.convertPlanToExecutable(plans);
|
|
493
|
+
await taskExecutor.append(executables);
|
|
494
|
+
output = await taskExecutor.flush();
|
|
495
|
+
return {
|
|
496
|
+
output,
|
|
497
|
+
executor: taskExecutor
|
|
498
|
+
};
|
|
487
499
|
}
|
|
488
500
|
async query(demand) {
|
|
489
|
-
const description = JSON.stringify(demand);
|
|
501
|
+
const description = typeof demand === "string" ? demand : JSON.stringify(demand);
|
|
490
502
|
const taskExecutor = new Executor(description);
|
|
491
503
|
taskExecutor.description = description;
|
|
492
|
-
let data;
|
|
493
504
|
const queryTask = {
|
|
494
505
|
type: "Insight",
|
|
495
506
|
subType: "Query",
|
|
@@ -502,23 +513,19 @@ var PageTaskExecutor = class {
|
|
|
502
513
|
insightDump = dump;
|
|
503
514
|
};
|
|
504
515
|
this.insight.onceDumpUpdatedFn = dumpCollector;
|
|
505
|
-
data = await this.insight.extract(param.dataDemand);
|
|
516
|
+
const data = await this.insight.extract(param.dataDemand);
|
|
506
517
|
return {
|
|
507
518
|
output: data,
|
|
508
519
|
log: { dump: insightDump }
|
|
509
520
|
};
|
|
510
521
|
}
|
|
511
522
|
};
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
const err = new Error(e.message, { cause: e });
|
|
519
|
-
throw err;
|
|
520
|
-
}
|
|
521
|
-
return data;
|
|
523
|
+
await taskExecutor.append(this.wrapExecutorWithScreenshot(queryTask));
|
|
524
|
+
const output = await taskExecutor.flush();
|
|
525
|
+
return {
|
|
526
|
+
output,
|
|
527
|
+
executor: taskExecutor
|
|
528
|
+
};
|
|
522
529
|
}
|
|
523
530
|
async assert(assertion) {
|
|
524
531
|
const description = assertion;
|
|
@@ -532,9 +539,11 @@ var PageTaskExecutor = class {
|
|
|
532
539
|
};
|
|
533
540
|
const assertTask = await this.convertPlanToExecutable([assertionPlan]);
|
|
534
541
|
await taskExecutor.append(this.wrapExecutorWithScreenshot(assertTask[0]));
|
|
535
|
-
const
|
|
536
|
-
|
|
537
|
-
|
|
542
|
+
const output = await taskExecutor.flush();
|
|
543
|
+
return {
|
|
544
|
+
output,
|
|
545
|
+
executor: taskExecutor
|
|
546
|
+
};
|
|
538
547
|
}
|
|
539
548
|
};
|
|
540
549
|
|
|
@@ -559,54 +568,39 @@ var PageAgent = class {
|
|
|
559
568
|
}
|
|
560
569
|
writeOutActionDumps() {
|
|
561
570
|
this.dumpFile = writeDumpFile({
|
|
562
|
-
fileName: `
|
|
571
|
+
fileName: `run-${this.testId}`,
|
|
563
572
|
fileExt: groupedActionDumpFileExt,
|
|
564
573
|
fileContent: stringifyDumpData(this.dumps)
|
|
565
574
|
});
|
|
566
575
|
}
|
|
567
576
|
async aiAction(taskPrompt) {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
this.appendDump(this.taskExecutor.executionDump);
|
|
576
|
-
this.writeOutActionDumps();
|
|
577
|
-
}
|
|
578
|
-
if (error) {
|
|
579
|
-
console.error(error);
|
|
580
|
-
throw new Error(error.message, { cause: error });
|
|
577
|
+
const { executor } = await this.taskExecutor.action(taskPrompt);
|
|
578
|
+
this.appendDump(executor.dump());
|
|
579
|
+
this.writeOutActionDumps();
|
|
580
|
+
if (executor.isInErrorState()) {
|
|
581
|
+
const errorTask = executor.latestErrorTask();
|
|
582
|
+
throw new Error(`${errorTask == null ? void 0 : errorTask.error}
|
|
583
|
+
${errorTask == null ? void 0 : errorTask.errorStack}`);
|
|
581
584
|
}
|
|
582
585
|
}
|
|
583
586
|
async aiQuery(demand) {
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
if (this.taskExecutor.executionDump) {
|
|
592
|
-
this.appendDump(this.taskExecutor.executionDump);
|
|
593
|
-
this.writeOutActionDumps();
|
|
587
|
+
const { output, executor } = await this.taskExecutor.query(demand);
|
|
588
|
+
this.appendDump(executor.dump());
|
|
589
|
+
this.writeOutActionDumps();
|
|
590
|
+
if (executor.isInErrorState()) {
|
|
591
|
+
const errorTask = executor.latestErrorTask();
|
|
592
|
+
throw new Error(`${errorTask == null ? void 0 : errorTask.error}
|
|
593
|
+
${errorTask == null ? void 0 : errorTask.errorStack}`);
|
|
594
594
|
}
|
|
595
|
-
|
|
596
|
-
console.error(error);
|
|
597
|
-
throw new Error(error.message, { cause: error });
|
|
598
|
-
}
|
|
599
|
-
return result;
|
|
595
|
+
return output;
|
|
600
596
|
}
|
|
601
597
|
async aiAssert(assertion, msg) {
|
|
602
|
-
const
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
if (!assertionResult.pass) {
|
|
598
|
+
const { output, executor } = await this.taskExecutor.assert(assertion);
|
|
599
|
+
this.appendDump(executor.dump());
|
|
600
|
+
this.writeOutActionDumps();
|
|
601
|
+
if (!(output == null ? void 0 : output.pass)) {
|
|
608
602
|
const errMsg = msg || `Assertion failed: ${assertion}`;
|
|
609
|
-
const reasonMsg = `Reason: ${
|
|
603
|
+
const reasonMsg = `Reason: ${output == null ? void 0 : output.thought} || (no_reason)`;
|
|
610
604
|
throw new Error(`${errMsg}
|
|
611
605
|
${reasonMsg}`);
|
|
612
606
|
}
|
package/dist/lib/index.js
CHANGED
|
@@ -176,13 +176,17 @@ async function getElementInfosFromPage(page) {
|
|
|
176
176
|
(0, import_node_assert.default)(pathDir, `can't find pathDir, with ${__dirname}`);
|
|
177
177
|
const scriptPath = import_node_path.default.join(pathDir, "./dist/script/htmlElement.js");
|
|
178
178
|
const elementInfosScriptContent = (0, import_node_fs.readFileSync)(scriptPath, "utf-8");
|
|
179
|
-
const extraReturnLogic = `${elementInfosScriptContent}midscene_element_inspector.
|
|
179
|
+
const extraReturnLogic = `${elementInfosScriptContent}midscene_element_inspector.extractTextWithPosition()`;
|
|
180
180
|
const captureElementSnapshot = await page.evaluate(extraReturnLogic);
|
|
181
181
|
return captureElementSnapshot;
|
|
182
182
|
}
|
|
183
|
+
var sizeThreshold = 3;
|
|
183
184
|
async function alignElements(screenshotBuffer, elements, page) {
|
|
184
185
|
const textsAligned = [];
|
|
185
|
-
|
|
186
|
+
const validElements = elements.filter((item) => {
|
|
187
|
+
return item.rect.height >= sizeThreshold && item.rect.width >= sizeThreshold;
|
|
188
|
+
});
|
|
189
|
+
for (const item of validElements) {
|
|
186
190
|
const { rect } = item;
|
|
187
191
|
const aligned = await (0, import_image.alignCoordByTrim)(screenshotBuffer, rect);
|
|
188
192
|
item.rect = aligned;
|
|
@@ -316,7 +320,8 @@ var PageTaskExecutor = class {
|
|
|
316
320
|
type: "Insight",
|
|
317
321
|
subType: "Assert",
|
|
318
322
|
param: assertPlan.param,
|
|
319
|
-
executor: async () => {
|
|
323
|
+
executor: async (param, taskContext) => {
|
|
324
|
+
const { task } = taskContext;
|
|
320
325
|
let insightDump;
|
|
321
326
|
const dumpCollector = (dump) => {
|
|
322
327
|
insightDump = dump;
|
|
@@ -325,6 +330,15 @@ var PageTaskExecutor = class {
|
|
|
325
330
|
const assertion = await this.insight.assert(
|
|
326
331
|
assertPlan.param.assertion
|
|
327
332
|
);
|
|
333
|
+
if (!assertion.pass) {
|
|
334
|
+
task.output = assertion;
|
|
335
|
+
task.log = {
|
|
336
|
+
dump: insightDump
|
|
337
|
+
};
|
|
338
|
+
throw new Error(
|
|
339
|
+
assertion.thought || "Assertion failed without reason"
|
|
340
|
+
);
|
|
341
|
+
}
|
|
328
342
|
return {
|
|
329
343
|
output: assertion,
|
|
330
344
|
log: {
|
|
@@ -490,29 +504,26 @@ var PageTaskExecutor = class {
|
|
|
490
504
|
};
|
|
491
505
|
}
|
|
492
506
|
};
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
this.executionDump = taskExecutor.dump();
|
|
501
|
-
(0, import_node_assert2.default)(
|
|
502
|
-
taskExecutor.status !== "error",
|
|
503
|
-
`failed to execute tasks: ${taskExecutor.status}, msg: ${taskExecutor.errorMsg || ""}`
|
|
504
|
-
);
|
|
505
|
-
} catch (e) {
|
|
506
|
-
this.executionDump = taskExecutor.dump();
|
|
507
|
-
const err = new Error(e.message, { cause: e });
|
|
508
|
-
throw err;
|
|
507
|
+
await taskExecutor.append(this.wrapExecutorWithScreenshot(planningTask));
|
|
508
|
+
let output = await taskExecutor.flush();
|
|
509
|
+
if (taskExecutor.isInErrorState()) {
|
|
510
|
+
return {
|
|
511
|
+
output,
|
|
512
|
+
executor: taskExecutor
|
|
513
|
+
};
|
|
509
514
|
}
|
|
515
|
+
const executables = await this.convertPlanToExecutable(plans);
|
|
516
|
+
await taskExecutor.append(executables);
|
|
517
|
+
output = await taskExecutor.flush();
|
|
518
|
+
return {
|
|
519
|
+
output,
|
|
520
|
+
executor: taskExecutor
|
|
521
|
+
};
|
|
510
522
|
}
|
|
511
523
|
async query(demand) {
|
|
512
|
-
const description = JSON.stringify(demand);
|
|
524
|
+
const description = typeof demand === "string" ? demand : JSON.stringify(demand);
|
|
513
525
|
const taskExecutor = new import_core.Executor(description);
|
|
514
526
|
taskExecutor.description = description;
|
|
515
|
-
let data;
|
|
516
527
|
const queryTask = {
|
|
517
528
|
type: "Insight",
|
|
518
529
|
subType: "Query",
|
|
@@ -525,23 +536,19 @@ var PageTaskExecutor = class {
|
|
|
525
536
|
insightDump = dump;
|
|
526
537
|
};
|
|
527
538
|
this.insight.onceDumpUpdatedFn = dumpCollector;
|
|
528
|
-
data = await this.insight.extract(param.dataDemand);
|
|
539
|
+
const data = await this.insight.extract(param.dataDemand);
|
|
529
540
|
return {
|
|
530
541
|
output: data,
|
|
531
542
|
log: { dump: insightDump }
|
|
532
543
|
};
|
|
533
544
|
}
|
|
534
545
|
};
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
const err = new Error(e.message, { cause: e });
|
|
542
|
-
throw err;
|
|
543
|
-
}
|
|
544
|
-
return data;
|
|
546
|
+
await taskExecutor.append(this.wrapExecutorWithScreenshot(queryTask));
|
|
547
|
+
const output = await taskExecutor.flush();
|
|
548
|
+
return {
|
|
549
|
+
output,
|
|
550
|
+
executor: taskExecutor
|
|
551
|
+
};
|
|
545
552
|
}
|
|
546
553
|
async assert(assertion) {
|
|
547
554
|
const description = assertion;
|
|
@@ -555,9 +562,11 @@ var PageTaskExecutor = class {
|
|
|
555
562
|
};
|
|
556
563
|
const assertTask = await this.convertPlanToExecutable([assertionPlan]);
|
|
557
564
|
await taskExecutor.append(this.wrapExecutorWithScreenshot(assertTask[0]));
|
|
558
|
-
const
|
|
559
|
-
|
|
560
|
-
|
|
565
|
+
const output = await taskExecutor.flush();
|
|
566
|
+
return {
|
|
567
|
+
output,
|
|
568
|
+
executor: taskExecutor
|
|
569
|
+
};
|
|
561
570
|
}
|
|
562
571
|
};
|
|
563
572
|
|
|
@@ -582,54 +591,39 @@ var PageAgent = class {
|
|
|
582
591
|
}
|
|
583
592
|
writeOutActionDumps() {
|
|
584
593
|
this.dumpFile = (0, import_utils4.writeDumpFile)({
|
|
585
|
-
fileName: `
|
|
594
|
+
fileName: `run-${this.testId}`,
|
|
586
595
|
fileExt: import_utils4.groupedActionDumpFileExt,
|
|
587
596
|
fileContent: (0, import_utils4.stringifyDumpData)(this.dumps)
|
|
588
597
|
});
|
|
589
598
|
}
|
|
590
599
|
async aiAction(taskPrompt) {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
this.appendDump(this.taskExecutor.executionDump);
|
|
599
|
-
this.writeOutActionDumps();
|
|
600
|
-
}
|
|
601
|
-
if (error) {
|
|
602
|
-
console.error(error);
|
|
603
|
-
throw new Error(error.message, { cause: error });
|
|
600
|
+
const { executor } = await this.taskExecutor.action(taskPrompt);
|
|
601
|
+
this.appendDump(executor.dump());
|
|
602
|
+
this.writeOutActionDumps();
|
|
603
|
+
if (executor.isInErrorState()) {
|
|
604
|
+
const errorTask = executor.latestErrorTask();
|
|
605
|
+
throw new Error(`${errorTask == null ? void 0 : errorTask.error}
|
|
606
|
+
${errorTask == null ? void 0 : errorTask.errorStack}`);
|
|
604
607
|
}
|
|
605
608
|
}
|
|
606
609
|
async aiQuery(demand) {
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
if (this.taskExecutor.executionDump) {
|
|
615
|
-
this.appendDump(this.taskExecutor.executionDump);
|
|
616
|
-
this.writeOutActionDumps();
|
|
610
|
+
const { output, executor } = await this.taskExecutor.query(demand);
|
|
611
|
+
this.appendDump(executor.dump());
|
|
612
|
+
this.writeOutActionDumps();
|
|
613
|
+
if (executor.isInErrorState()) {
|
|
614
|
+
const errorTask = executor.latestErrorTask();
|
|
615
|
+
throw new Error(`${errorTask == null ? void 0 : errorTask.error}
|
|
616
|
+
${errorTask == null ? void 0 : errorTask.errorStack}`);
|
|
617
617
|
}
|
|
618
|
-
|
|
619
|
-
console.error(error);
|
|
620
|
-
throw new Error(error.message, { cause: error });
|
|
621
|
-
}
|
|
622
|
-
return result;
|
|
618
|
+
return output;
|
|
623
619
|
}
|
|
624
620
|
async aiAssert(assertion, msg) {
|
|
625
|
-
const
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
}
|
|
630
|
-
if (!assertionResult.pass) {
|
|
621
|
+
const { output, executor } = await this.taskExecutor.assert(assertion);
|
|
622
|
+
this.appendDump(executor.dump());
|
|
623
|
+
this.writeOutActionDumps();
|
|
624
|
+
if (!(output == null ? void 0 : output.pass)) {
|
|
631
625
|
const errMsg = msg || `Assertion failed: ${assertion}`;
|
|
632
|
-
const reasonMsg = `Reason: ${
|
|
626
|
+
const reasonMsg = `Reason: ${output == null ? void 0 : output.thought} || (no_reason)`;
|
|
633
627
|
throw new Error(`${errMsg}
|
|
634
628
|
${reasonMsg}`);
|
|
635
629
|
}
|
|
@@ -577,7 +577,7 @@ var midscene_element_inspector = (() => {
|
|
|
577
577
|
// src/extractor/index.ts
|
|
578
578
|
var extractor_exports = {};
|
|
579
579
|
__export(extractor_exports, {
|
|
580
|
-
|
|
580
|
+
extractTextWithPosition: () => extractTextWithPosition
|
|
581
581
|
});
|
|
582
582
|
|
|
583
583
|
// src/extractor/constants.ts
|
|
@@ -720,7 +720,7 @@ var midscene_element_inspector = (() => {
|
|
|
720
720
|
function generateId(numberId) {
|
|
721
721
|
return `${numberId}`;
|
|
722
722
|
}
|
|
723
|
-
function
|
|
723
|
+
function extractTextWithPosition(initNode = container) {
|
|
724
724
|
const elementInfoArray = [];
|
|
725
725
|
const nodeMapTree = { node: initNode, children: [] };
|
|
726
726
|
let nodeIndex = 1;
|
|
@@ -23,6 +23,6 @@ interface ElementInfo {
|
|
|
23
23
|
};
|
|
24
24
|
center: [number, number];
|
|
25
25
|
}
|
|
26
|
-
declare function
|
|
26
|
+
declare function extractTextWithPosition(initNode?: Node): ElementInfo[];
|
|
27
27
|
|
|
28
|
-
export {
|
|
28
|
+
export { extractTextWithPosition };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TestInfo } from '@playwright/test';
|
|
2
2
|
import { Page } from 'playwright';
|
|
3
3
|
import { Page as Page$1 } from 'puppeteer';
|
|
4
|
-
import Insight, { BaseElement, Rect, UIContext, PlanningAction, AIElementParseResponse,
|
|
4
|
+
import Insight, { BaseElement, Rect, UIContext, PlanningAction, AIElementParseResponse, InsightExtractParam, InsightAssertionResponse, Executor, GroupedActionDump, ExecutionDump } from '@midscene/core';
|
|
5
5
|
|
|
6
6
|
type WebPage = Page | Page$1;
|
|
7
7
|
|
|
@@ -106,10 +106,13 @@ declare class TaskCache {
|
|
|
106
106
|
generateTaskCache(): AiTaskCache;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
interface ExecutionResult<OutputType = any> {
|
|
110
|
+
output: OutputType;
|
|
111
|
+
executor: Executor;
|
|
112
|
+
}
|
|
109
113
|
declare class PageTaskExecutor {
|
|
110
114
|
page: WebPage;
|
|
111
115
|
insight: Insight<WebElementInfo, WebUIContext>;
|
|
112
|
-
executionDump?: ExecutionDump;
|
|
113
116
|
taskCache: TaskCache;
|
|
114
117
|
constructor(page: WebPage, opts: {
|
|
115
118
|
cache: AiTaskCache;
|
|
@@ -117,9 +120,9 @@ declare class PageTaskExecutor {
|
|
|
117
120
|
private recordScreenshot;
|
|
118
121
|
private wrapExecutorWithScreenshot;
|
|
119
122
|
private convertPlanToExecutable;
|
|
120
|
-
action(userPrompt: string): Promise<
|
|
121
|
-
query(demand: InsightExtractParam): Promise<
|
|
122
|
-
assert(assertion: string): Promise<InsightAssertionResponse
|
|
123
|
+
action(userPrompt: string): Promise<ExecutionResult>;
|
|
124
|
+
query(demand: InsightExtractParam): Promise<ExecutionResult>;
|
|
125
|
+
assert(assertion: string): Promise<ExecutionResult<InsightAssertionResponse>>;
|
|
123
126
|
}
|
|
124
127
|
|
|
125
128
|
declare const PlaywrightAiFixture: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html><head><title></title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,viewport-fit=cover,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="renderer" content="webkit"><meta name="layoutmode" content="standard"><meta name="imagemode" content="force"><meta name="wap-font-scale" content="no"><meta name="format-detection" content="telephone=no"><script defer="defer">(()=>{"use strict";var e={},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n].call(u.exports,u,u.exports,r),u.exports}r.m=e,r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};r.t=function(n,o){if(1&o&&(n=this(n)),8&o||"object"==typeof n&&n&&(4&o&&n.__esModule||16&o&&"function"==typeof n.then))return n;var u=Object.create(null);r.r(u);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&o&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((function(e){i[e]=function(){return n[e]}}));return i.default=function(){return n},r.d(u,i),u}})(),r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))},r.u=function(e){return"static/js/async/"+e+"."+{16:"8b96d0ce",212:"b25a2c30",353:"78fcb703",399:"84fa60a7",453:"782b249a",544:"ee973964",983:"ef821e39"}[e]+".js"},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},(()=>{var e={},t="@midscene/visualizer-report:";r.l=function(n,o,u,i){if(e[n])e[n].push(o);else{if(void 0!==u)for(var a,c,f=document.getElementsByTagName("script"),l=0;l<f.length;l++){var s=f[l];if(s.getAttribute("src")==n||s.getAttribute("data-webpack")==t+u){a=s;break}}!a&&(c=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",t+u),a.src=n),e[n]=[o];var d=function(t,r){a.onerror=a.onload=null,clearTimeout(p);var o=e[n];if(delete e[n],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((function(e){return e(r)})),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e=[];r.O=function(t,n,o,u){if(!n){var i=1/0;for(l=0;l<e.length;l++){n=e[l][0],o=e[l][1],u=e[l][2];for(var a=!0,c=0;c<n.length;c++)(!1&u||i>=u)&&Object.keys(r.O).every((function(e){return r.O[e](n[c])}))?n.splice(c--,1):(a=!1,u<i&&(i=u));if(a){e.splice(l--,1);var f=o();void 0!==f&&(t=f)}}return t}u=u||0;for(var l=e.length;l>0&&e[l-1][2]>u;l--)e[l]=e[l-1];e[l]=[n,o,u]}})(),r.p="/",r.rv=function(){return"1.0.0-alpha.5"},(()=>{var e={242:0};r.f.j=function(t,n){var o=r.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else if(242!=t){var u=new Promise((function(r,n){o=e[t]=[r,n]}));n.push(o[2]=u);var i=r.p+r.u(t),a=Error();r.l(i,(function(n){if(r.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var u=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+u+": "+i+")",a.name="ChunkLoadError",a.type=u,a.request=i,o[1](a)}}),"chunk-"+t,t)}else e[t]=0},r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,u,i=n[0],a=n[1],c=n[2],f=0;if(i.some((function(t){return 0!==e[t]}))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(c)var l=c(r)}for(t&&t(n);f<i.length;f++)u=i[f],r.o(e,u)&&e[u]&&e[u][0](),e[u]=0;return r.O(l)},n=self.webpackChunk_midscene_visualizer_report=self.webpackChunk_midscene_visualizer_report||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.ruid="bundler=rspack@1.0.0-alpha.5"})()</script><script defer="defer" src="/static/js/lib-react.c011fc71.js"></script><script defer="defer" src="/static/js/lib-polyfill.3da3e38e.js"></script><script defer="defer" src="/static/js/lib-antd.583c9200.js"></script><script defer="defer" src="/static/js/lib-router.226970ff.js"></script><script defer="defer" src="/static/js/
|
|
1
|
+
<!doctype html><html><head><title></title><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,viewport-fit=cover,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="renderer" content="webkit"><meta name="layoutmode" content="standard"><meta name="imagemode" content="force"><meta name="wap-font-scale" content="no"><meta name="format-detection" content="telephone=no"><script defer="defer">(()=>{"use strict";var e={},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n].call(u.exports,u,u.exports,r),u.exports}r.m=e,r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};r.t=function(n,o){if(1&o&&(n=this(n)),8&o||"object"==typeof n&&n&&(4&o&&n.__esModule||16&o&&"function"==typeof n.then))return n;var u=Object.create(null);r.r(u);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&o&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((function(e){i[e]=function(){return n[e]}}));return i.default=function(){return n},r.d(u,i),u}})(),r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=function(e){return Promise.all(Object.keys(r.f).reduce((function(t,n){return r.f[n](e,t),t}),[]))},r.u=function(e){return"static/js/async/"+e+"."+{16:"8b96d0ce",212:"b25a2c30",353:"78fcb703",399:"84fa60a7",453:"782b249a",544:"ee973964",983:"ef821e39"}[e]+".js"},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},(()=>{var e={},t="@midscene/visualizer-report:";r.l=function(n,o,u,i){if(e[n])e[n].push(o);else{if(void 0!==u)for(var a,c,f=document.getElementsByTagName("script"),l=0;l<f.length;l++){var s=f[l];if(s.getAttribute("src")==n||s.getAttribute("data-webpack")==t+u){a=s;break}}!a&&(c=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",t+u),a.src=n),e[n]=[o];var d=function(t,r){a.onerror=a.onload=null,clearTimeout(p);var o=e[n];if(delete e[n],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((function(e){return e(r)})),t)return t(r)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),c&&document.head.appendChild(a)}}})(),r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e=[];r.O=function(t,n,o,u){if(!n){var i=1/0;for(l=0;l<e.length;l++){n=e[l][0],o=e[l][1],u=e[l][2];for(var a=!0,c=0;c<n.length;c++)(!1&u||i>=u)&&Object.keys(r.O).every((function(e){return r.O[e](n[c])}))?n.splice(c--,1):(a=!1,u<i&&(i=u));if(a){e.splice(l--,1);var f=o();void 0!==f&&(t=f)}}return t}u=u||0;for(var l=e.length;l>0&&e[l-1][2]>u;l--)e[l]=e[l-1];e[l]=[n,o,u]}})(),r.p="/",r.rv=function(){return"1.0.0-alpha.5"},(()=>{var e={242:0};r.f.j=function(t,n){var o=r.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else if(242!=t){var u=new Promise((function(r,n){o=e[t]=[r,n]}));n.push(o[2]=u);var i=r.p+r.u(t),a=Error();r.l(i,(function(n){if(r.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var u=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;a.message="Loading chunk "+t+" failed.\n("+u+": "+i+")",a.name="ChunkLoadError",a.type=u,a.request=i,o[1](a)}}),"chunk-"+t,t)}else e[t]=0},r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,u,i=n[0],a=n[1],c=n[2],f=0;if(i.some((function(t){return 0!==e[t]}))){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(c)var l=c(r)}for(t&&t(n);f<i.length;f++)u=i[f],r.o(e,u)&&e[u]&&e[u][0](),e[u]=0;return r.O(l)},n=self.webpackChunk_midscene_visualizer_report=self.webpackChunk_midscene_visualizer_report||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.ruid="bundler=rspack@1.0.0-alpha.5"})()</script><script defer="defer" src="/static/js/lib-react.c011fc71.js"></script><script defer="defer" src="/static/js/lib-polyfill.3da3e38e.js"></script><script defer="defer" src="/static/js/lib-antd.583c9200.js"></script><script defer="defer" src="/static/js/lib-router.226970ff.js"></script><script defer="defer" src="/static/js/43.c54711bc.js"></script><script defer="defer" src="/static/js/index.013f8b6a.js"></script><link href="/static/css/index.ce838015.css" rel="stylesheet"></head><body><div id="root"><!--<?- html ?>--></div><!--<?- chunksMap.js ?>--><!--<?- SSRDataScript ?>--></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.nav-u66WwU{margin:20px 0;max-width:680px}.container-Hq9bKt{margin:0 auto;max-width:980px}.test-result-pnK7ny{margin-top:40px}.test-details-UpOFMM{border-top:1px solid #ccc;cursor:pointer;margin-top:-1px;padding:20px}.test-details-UpOFMM:hover{background-color:#d3d3d3}.test-info-AphlaH{display:flex}.test-name-us3J87{flex-grow:1;font-size:medium;font-weight:700}.failed-LIeQqO{font-size:small}.test-file-path-BdYiH4{color:#6e7781;margin-top:10px}.test-result{background-color:#f9f9f9;border:1px solid #ccc;border-radius:8px;font-family:Arial,sans-serif;margin:20px;padding:20px}.test-summary{margin-bottom:20px}.test-summary div{margin:5px 0}.test-file,.test-project,.test-status,.test-time{font-weight:700}.test-status.failed{color:red}.test-details{margin-top:20px}.test-name{font-size:1.2em;margin-bottom:10px}.test-duration{color:#555}.ant-collapse-content-box{padding:0!important}body,html{margin:0;padding:0}.rspress-nav{transition:.2s}:root{--modern-sidebar-width:0!important;--modern-aside-width:0!important;--modern-preview-padding:0!important}.modern-doc,.modern-doc-layout{height:100vh;margin:0!important;padding:0!important;width:100%!important}.modern-sidebar,header.w-full{display:none!important}.modern-doc-container{padding:0!important}footer.mt-8{display:none}.page-container{border-bottom:1px solid #e5e5e5;border-top:1px solid #e5e5e5;color:#3b3b3b;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:14px;height:100%}.ant-layout{flex-grow:1;height:100%}.main-right{box-sizing:border-box;display:flex;flex-direction:column;height:100%;width:100%}.main-right .main-content{background:#fff;display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.main-right.uploader-wrapper{box-sizing:border-box;flex-direction:column;justify-content:center;margin:auto;max-width:800px}.main-right.uploader-wrapper .uploader{width:100%}.main-right.uploader-wrapper .demo-loader{margin-top:10px;text-align:center;width:100%}.main-right .main-canvas-container{background:#fff;border-left:1px solid #e5e5e5;flex-grow:1;height:100%;overflow-x:hidden;overflow-y:scroll}.main-right .main-side{box-sizing:border-box;overflow-y:scroll}.main-right .json-content{word-wrap:break-word;white-space:pre-wrap}.detail-side h2{margin-bottom:4px;margin-top:0;padding-top:0}.detail-side .ant-tag{margin-top:2px}.detail-side .meta-kv{padding:10px 10px 14px}.detail-side .meta-kv .meta{box-sizing:border-box;display:flex;flex-direction:row;line-height:1.5;padding:2px 0;width:100%}.detail-side .meta-kv .meta .meta-key{padding-right:16px;text-align:right;width:100px}.detail-side .meta-kv .meta .meta-value{flex:1 1}.detail-side .item-list{cursor:default;margin-bottom:10px;padding:10px 10px}.detail-side .item-list .item{border:1px solid #ddd;border-radius:5px;margin-bottom:10px;padding:16px 10px 10px;position:relative;transition:.1s}.detail-side .item-list .item.item-lite{border:none;padding:0}.detail-side .item-list .item-highlight{color:#fff}.detail-side .item-list .item-highlight .subtitle{color:#ccc}.detail-side .item-list .item-extra{color:#777;position:absolute;right:10px;top:10px}.detail-side .item-list .title-right-padding{padding-right:15px}.detail-side .item-list .title{font-size:18px;font-weight:700;margin-bottom:5px}.detail-side .item-list .title .title-tag{color:#777;display:inline-block;font-size:14px;line-height:18px;margin-left:6px}.detail-side .item-list .subtitle{color:#777;font-size:14px;font-weight:400}.detail-side .item-list .description{margin-top:5px}.detail-side .item-list .description-content{font-size:14px;margin-top:10px;white-space:break-spaces;word-wrap:break-word;margin:0}.detail-side .item-list .element-button:hover{background:#f9483e;color:#fff}.detail-side .item-list .section-button:hover{background:#01204e;color:#fff}.detail-side pre{text-wrap:balance}.detail-side .item-list-space-up{margin-top:10px}.task-list-name{background:#f8f8f8;border-bottom:1px solid #e5e5e5;border-top:1px solid #e5e5e5;font-weight:700;margin-top:-1px;padding:2px 10px}.side-bar{background:#f8f8f8;border-right:1px solid #e5e5e5;display:flex;flex-direction:column;height:100%;justify-content:space-between;overflow:auto;width:100%}.side-bar .brand{cursor:pointer;display:flex;padding:10px 5px}.side-bar .task-meta-section{margin-top:6px}.side-bar .task-meta{color:#777;font-weight:400;padding-left:10px}.side-bar .side-seperator{border-top:1px none}.side-bar .side-seperator.side-seperator-line{border-top:1px solid #e5e5e5}.side-bar .side-seperator.side-seperator-space-up{margin-top:10px}.side-bar .side-seperator.side-seperator-space-down{margin-bottom:10px}.side-bar .side-sub-title{margin-bottom:6px;padding:0 10px}.side-bar .side-item{cursor:pointer;padding:2px 0;transition:.1s}.side-bar .side-item:hover{background:#dcdcdc80}.side-bar .side-item.selected{background:#bfc4da80}.side-bar .side-item .side-item-content{padding:0 10px 0
|
|
1
|
+
.nav-u66WwU{margin:20px 0;max-width:680px}.container-Hq9bKt{margin:0 auto;max-width:980px}.test-result-pnK7ny{margin-top:40px}.test-details-UpOFMM{border-top:1px solid #ccc;cursor:pointer;margin-top:-1px;padding:20px}.test-details-UpOFMM:hover{background-color:#d3d3d3}.test-info-AphlaH{display:flex}.test-name-us3J87{flex-grow:1;font-size:medium;font-weight:700}.failed-LIeQqO{font-size:small}.test-file-path-BdYiH4{color:#6e7781;margin-top:10px}.test-result{background-color:#f9f9f9;border:1px solid #ccc;border-radius:8px;font-family:Arial,sans-serif;margin:20px;padding:20px}.test-summary{margin-bottom:20px}.test-summary div{margin:5px 0}.test-file,.test-project,.test-status,.test-time{font-weight:700}.test-status.failed{color:red}.test-details{margin-top:20px}.test-name{font-size:1.2em;margin-bottom:10px}.test-duration{color:#555}.ant-collapse-content-box{padding:0!important}body,html{margin:0;padding:0}.rspress-nav{transition:.2s}:root{--modern-sidebar-width:0!important;--modern-aside-width:0!important;--modern-preview-padding:0!important}.modern-doc,.modern-doc-layout{height:100vh;margin:0!important;padding:0!important;width:100%!important}.modern-sidebar,header.w-full{display:none!important}.modern-doc-container{padding:0!important}footer.mt-8{display:none}.page-container{border-bottom:1px solid #e5e5e5;border-top:1px solid #e5e5e5;color:#3b3b3b;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:14px;height:100%}.ant-layout{flex-grow:1;height:100%}.main-right{box-sizing:border-box;display:flex;flex-direction:column;height:100%;width:100%}.main-right .main-content{background:#fff;display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.main-right.uploader-wrapper{box-sizing:border-box;flex-direction:column;justify-content:center;margin:auto;max-width:800px}.main-right.uploader-wrapper .uploader{width:100%}.main-right.uploader-wrapper .demo-loader{margin-top:10px;text-align:center;width:100%}.main-right .main-canvas-container{background:#fff;border-left:1px solid #e5e5e5;flex-grow:1;height:100%;overflow-x:hidden;overflow-y:scroll}.main-right .main-side{box-sizing:border-box;overflow-y:scroll}.main-right .json-content{word-wrap:break-word;white-space:pre-wrap}.detail-side h2{margin-bottom:4px;margin-top:0;padding-top:0}.detail-side .ant-tag{margin-top:2px}.detail-side .meta-kv{padding:10px 10px 14px}.detail-side .meta-kv .meta{box-sizing:border-box;display:flex;flex-direction:row;line-height:1.5;padding:2px 0;width:100%}.detail-side .meta-kv .meta .meta-key{padding-right:16px;text-align:right;width:100px}.detail-side .meta-kv .meta .meta-value{flex:1 1}.detail-side .item-list{cursor:default;margin-bottom:10px;padding:10px 10px}.detail-side .item-list .item{border:1px solid #ddd;border-radius:5px;margin-bottom:10px;padding:16px 10px 10px;position:relative;transition:.1s}.detail-side .item-list .item.item-lite{border:none;padding:0}.detail-side .item-list .item-highlight{color:#fff}.detail-side .item-list .item-highlight .subtitle{color:#ccc}.detail-side .item-list .item-extra{color:#777;position:absolute;right:10px;top:10px}.detail-side .item-list .title-right-padding{padding-right:15px}.detail-side .item-list .title{font-size:18px;font-weight:700;margin-bottom:5px}.detail-side .item-list .title .title-tag{color:#777;display:inline-block;font-size:14px;line-height:18px;margin-left:6px}.detail-side .item-list .subtitle{color:#777;font-size:14px;font-weight:400}.detail-side .item-list .description{margin-top:5px}.detail-side .item-list .description-content{font-size:14px;margin-top:10px;white-space:break-spaces;word-wrap:break-word;margin:0}.detail-side .item-list .element-button:hover{background:#f9483e;color:#fff}.detail-side .item-list .section-button:hover{background:#01204e;color:#fff}.detail-side pre{text-wrap:balance}.detail-side .item-list-space-up{margin-top:10px}.task-list-name{background:#f8f8f8;border-bottom:1px solid #e5e5e5;border-top:1px solid #e5e5e5;font-weight:700;margin-top:-1px;padding:2px 10px}.side-bar{background:#f8f8f8;border-right:1px solid #e5e5e5;display:flex;flex-direction:column;height:100%;justify-content:space-between;overflow:auto;width:100%}.side-bar .brand{cursor:pointer;display:flex;padding:10px 5px}.side-bar .task-meta-section{margin-top:6px}.side-bar .task-meta{color:#777;font-weight:400;padding-left:10px}.side-bar .side-seperator{border-top:1px none}.side-bar .side-seperator.side-seperator-line{border-top:1px solid #e5e5e5}.side-bar .side-seperator.side-seperator-space-up{margin-top:10px}.side-bar .side-seperator.side-seperator-space-down{margin-bottom:10px}.side-bar .side-sub-title{margin-bottom:6px;padding:0 10px}.side-bar .name-status{display:inline-block;font-size:12px;margin-right:6px}.side-bar .side-item{cursor:pointer;padding:2px 0;transition:.1s}.side-bar .side-item:hover{background:#dcdcdc80}.side-bar .side-item.selected{background:#bfc4da80}.side-bar .side-item .side-item-content{padding:0 10px 0 28px}.side-bar .side-item-name{display:flex;justify-content:space-between;padding:0 10px 0 28px;position:relative}.side-bar .side-item-name .status-icon{color:#aaa;display:inline-block;font-size:12px;left:10px;line-height:10px;margin-top:-5px;position:absolute;top:50%}.side-bar .side-item-name .status-icon-success{color:#2b8243}.side-bar .side-item-name .status-icon-fail{color:#ff0a0a}.side-bar .side-item-name .status-text{color:#777}.side-bar .bottom-controls{padding:10px 10px;text-align:left;text-align:center}.detail-panel{background:#fff;display:flex;flex-direction:column;height:100%;padding:10px}.detail-panel .ant-segmented{padding:0}.detail-panel .view-switcher{flex-shrink:0;margin-bottom:10px}.detail-panel .detail-content{box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center}.detail-panel .blackboard{margin:0 auto}.detail-panel .screenshot-item{margin-bottom:10px}.detail-panel .screenshot-item .screenshot-item-title{margin-bottom:5px}.detail-panel .screenshot-item img{border:1px solid #888;max-width:100%}.blackboard .footer{color:#aaa}.blackboard ul{padding-left:0}.blackboard li{list-style:none}.blackboard .bottom-tip{height:30px}.blackboard .bottom-tip-item{color:#aaa;max-width:500px;text-overflow:ellipsis;word-wrap:break-word}.blackboard-filter{margin:10px 0}.blackboard-main-content canvas{border:1px solid #888;width:100%}.global-hover-preview{background:#f8f8f8;border:1px solid #e5e5e5;box-shadow:1px 1px 5px 0 rgba(0,0,0,.2);box-sizing:border-box;display:block;max-height:400px;max-width:400px;overflow:hidden;position:fixed;text-align:center;z-index:10}.global-hover-preview img{height:auto;max-height:400px;max-width:400px;width:auto}.timeline-wrapper{border-bottom:1px solid #e5e5e5;box-sizing:border-box;flex-basis:110px;flex-grow:0;flex-shrink:0;position:relative}.timeline-wrapper,.timeline-wrapper .timeline-canvas-wrapper,.timeline-wrapper canvas{height:100%;width:100%}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/css/index.eccd04e1.css","sources":["webpack://@midscene/visualizer-report/./src/pages/Home.module.css","webpack://@midscene/visualizer-report/./src/pages/TestResult.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/index.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/detail-side.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/panel-title.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/sidebar.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/detail-panel.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/blackboard.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/global-hover-preview.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/timeline.css"],"sourcesContent":[".nav {\n /* display: flex;\n justify-content: center; */\n max-width: 680px;\n margin: 20px 0;\n}\n\n.container {\n max-width: 980px;\n margin: 0 auto;\n}\n\n.test-result {\n margin-top: 40px;\n}\n\n\n.test-details {\n margin-top: -1px;\n cursor: pointer;\n padding: 20px;\n border-top: 1px solid #ccc;\n}\n.test-details:hover {\n background-color: #d3d3d3;\n}\n\n.test-info {\n display: flex;\n}\n.test-name{\n flex-grow: 1;\n font-weight: bold;\n font-size: medium;\n}\n\n.failed{\n font-size: small;\n}\n.test-file-path {\n color: #6e7781;\n margin-top: 10px;\n}",".test-result {\n font-family: Arial, sans-serif;\n margin: 20px;\n padding: 20px;\n border: 1px solid #ccc;\n border-radius: 8px;\n background-color: #f9f9f9;\n}\n\n.test-summary {\n margin-bottom: 20px;\n}\n\n.test-summary div {\n margin: 5px 0;\n}\n\n.test-project,\n.test-file,\n.test-status,\n.test-time {\n font-weight: bold;\n}\n\n.test-status.failed {\n color: red;\n}\n\n.test-details {\n margin-top: 20px;\n}\n\n.test-name {\n font-size: 1.2em;\n margin-bottom: 10px;\n}\n\n.test-duration {\n color: #555;\n}\n\n.ant-collapse-content-box {\n padding: 0!important;\n}","html,\nbody {\n padding: 0;\n margin: 0;\n}\n.rspress-nav {\n transition: 0.2s;\n}\n:root {\n --modern-sidebar-width: 0 !important;\n --modern-aside-width: 0 !important;\n --modern-preview-padding: 0 !important;\n}\n.modern-doc-layout,\n.modern-doc {\n width: 100% !important;\n margin: 0 !important;\n padding: 0 !important;\n height: 100vh;\n}\n.modern-sidebar,\nheader.w-full {\n display: none !important;\n}\n.modern-doc-container {\n padding: 0 !important;\n}\nfooter.mt-8 {\n display: none;\n}\n.page-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n color: #3b3b3b;\n font-family:\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n \"Noto Sans\",\n Helvetica,\n Arial,\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\";\n font-size: 14px;\n border-top: 1px solid #E5E5E5;\n border-bottom: 1px solid #E5E5E5;\n}\n.ant-layout {\n flex-grow: 1;\n height: 100%;\n}\n.main-right {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n.main-right .main-content {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n overflow: hidden;\n background: #FFF;\n}\n.main-right.uploader-wrapper {\n box-sizing: border-box;\n margin: auto;\n max-width: 800px;\n flex-direction: column;\n justify-content: center;\n}\n.main-right.uploader-wrapper .uploader {\n width: 100%;\n}\n.main-right.uploader-wrapper .demo-loader {\n width: 100%;\n text-align: center;\n margin-top: 10px;\n}\n.main-right .main-canvas-container {\n flex-grow: 1;\n height: 100%;\n background: #ffffff;\n overflow-x: hidden;\n overflow-y: scroll;\n border-left: 1px solid #E5E5E5;\n}\n.main-right .main-side {\n box-sizing: border-box;\n overflow-y: scroll;\n}\n.main-right .json-content {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n",".detail-side h2 {\n padding-top: 0;\n margin-top: 0;\n margin-bottom: 4px;\n}\n.detail-side .ant-tag {\n margin-top: 2px;\n}\n.detail-side .meta-kv {\n padding: 10px 10px calc(10px + 4px);\n}\n.detail-side .meta-kv .meta {\n box-sizing: border-box;\n padding: 2px 0;\n width: 100%;\n display: flex;\n flex-direction: row;\n line-height: 1.5;\n}\n.detail-side .meta-kv .meta .meta-key {\n width: 100px;\n text-align: right;\n padding-right: 16px;\n}\n.detail-side .meta-kv .meta .meta-value {\n flex: 1 1;\n}\n.detail-side .item-list {\n padding: 10px 10px;\n cursor: default;\n margin-bottom: 10px;\n}\n.detail-side .item-list .item {\n padding: 16px 10px 10px;\n transition: 0.1s;\n border: 1px solid #DDD;\n border-radius: 5px;\n margin-bottom: 10px;\n position: relative;\n}\n.detail-side .item-list .item.item-lite {\n border: none;\n padding: 0;\n}\n.detail-side .item-list .item-highlight {\n color: #FFF;\n}\n.detail-side .item-list .item-highlight .subtitle {\n color: #CCC;\n}\n.detail-side .item-list .item-extra {\n position: absolute;\n right: 10px;\n top: 10px;\n color: #777;\n}\n.detail-side .item-list .title-right-padding {\n padding-right: 15px;\n}\n.detail-side .item-list .title {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 5px;\n}\n.detail-side .item-list .title .title-tag {\n display: inline-block;\n margin-left: 6px;\n color: #777;\n font-size: 14px;\n line-height: 18px;\n}\n.detail-side .item-list .subtitle {\n font-weight: normal;\n font-size: 14px;\n color: #777;\n}\n.detail-side .item-list .description {\n margin-top: 5px;\n}\n.detail-side .item-list .description-content {\n font-size: 14px;\n margin-top: 10px;\n white-space: break-spaces;\n word-wrap: break-word;\n margin: 0;\n}\n.detail-side .item-list .element-button:hover {\n color: #fff;\n background: #F9483E;\n}\n.detail-side .item-list .section-button:hover {\n color: #fff;\n background: #01204E;\n}\n.detail-side pre {\n text-wrap: balance;\n}\n.detail-side .item-list-space-up {\n margin-top: 10px;\n}\n",".task-list-name {\n padding: 2px 10px;\n font-weight: bold;\n background: #F8F8F8;\n border-top: 1px solid #E5E5E5;\n border-bottom: 1px solid #E5E5E5;\n margin-top: -1px;\n}\n",".side-bar {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n border-right: 1px solid #E5E5E5;\n overflow: auto;\n background: #F8F8F8;\n}\n.side-bar .brand {\n padding: 10px 5px;\n cursor: pointer;\n display: flex;\n}\n.side-bar .task-meta-section {\n margin-top: 6px;\n}\n.side-bar .task-meta {\n color: #777;\n font-weight: normal;\n padding-left: 10px;\n}\n.side-bar .side-seperator {\n border-top: 1px solid none;\n}\n.side-bar .side-seperator.side-seperator-line {\n border-top: 1px solid #E5E5E5;\n}\n.side-bar .side-seperator.side-seperator-space-up {\n margin-top: 10px;\n}\n.side-bar .side-seperator.side-seperator-space-down {\n margin-bottom: 10px;\n}\n.side-bar .side-sub-title {\n padding: 0 10px;\n margin-bottom: 6px;\n}\n.side-bar .side-item {\n cursor: pointer;\n transition: 0.1s;\n padding: 2px 0;\n}\n.side-bar .side-item:hover {\n background: #dcdcdc80;\n}\n.side-bar .side-item.selected {\n background: #bfc4da80;\n}\n.side-bar .side-item .side-item-content {\n padding: 0 10px 0 calc(10px + 16px);\n}\n.side-bar .side-item-name {\n padding: 0 10px 0 calc(10px + 16px);\n position: relative;\n display: flex;\n justify-content: space-between;\n}\n.side-bar .side-item-name .status-icon {\n position: absolute;\n left: 10px;\n display: inline-block;\n color: #AAA;\n font-size: 10px;\n line-height: 10px;\n top: 50%;\n margin-top: -5px;\n}\n.side-bar .side-item-name .status-icon-success {\n color: #2B8243;\n}\n.side-bar .side-item-name .status-icon-fail {\n color: #ff0a0a;\n}\n.side-bar .side-item-name .status-text {\n color: #777;\n}\n.side-bar .bottom-controls {\n padding: 10px 10px;\n text-align: left;\n text-align: center;\n}\n",".detail-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 10px;\n background: #FFF;\n}\n.detail-panel .ant-segmented {\n padding: 0;\n}\n.detail-panel .view-switcher {\n margin-bottom: 10px;\n flex-shrink: 0;\n}\n.detail-panel .detail-content {\n box-sizing: border-box;\n justify-content: center;\n flex-direction: column;\n display: flex;\n flex-grow: 1;\n}\n.detail-panel .blackboard {\n margin: 0 auto;\n}\n.detail-panel .screenshot-item {\n margin-bottom: 10px;\n}\n.detail-panel .screenshot-item .screenshot-item-title {\n margin-bottom: 5px;\n}\n.detail-panel .screenshot-item img {\n border: 1px solid #888;\n max-width: 100%;\n}\n",".blackboard .footer {\n color: #aaa;\n}\n.blackboard ul {\n padding-left: 0px;\n}\n.blackboard li {\n list-style: none;\n}\n.blackboard .bottom-tip {\n height: 30px;\n}\n.blackboard .bottom-tip-item {\n max-width: 500px;\n color: #AAA;\n text-overflow: ellipsis;\n word-wrap: break-word;\n}\n.blackboard-filter {\n margin: 10px 0;\n}\n.blackboard-main-content canvas {\n width: 100%;\n border: 1px solid #888;\n}\n",".global-hover-preview {\n position: fixed;\n display: block;\n max-width: 400px;\n max-height: 400px;\n overflow: hidden;\n z-index: 10;\n text-align: center;\n border: 1px solid #E5E5E5;\n box-sizing: border-box;\n background: #F8F8F8;\n box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.2);\n}\n.global-hover-preview img {\n max-width: 400px;\n max-height: 400px;\n width: auto;\n height: auto;\n}\n",".timeline-wrapper {\n flex-basis: 110px;\n flex-grow: 0;\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n border-bottom: 1px solid #E5E5E5;\n position: relative;\n box-sizing: border-box;\n}\n.timeline-wrapper .timeline-canvas-wrapper {\n width: 100%;\n height: 100%;\n}\n.timeline-wrapper canvas {\n width: 100%;\n height: 100%;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"static/css/index.ce838015.css","sources":["webpack://@midscene/visualizer-report/./src/pages/Home.module.css","webpack://@midscene/visualizer-report/./src/pages/TestResult.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/index.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/detail-side.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/panel-title.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/sidebar.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/detail-panel.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/blackboard.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/global-hover-preview.css","webpack://@midscene/visualizer-report/../visualizer/dist/es/component/timeline.css"],"sourcesContent":[".nav {\n /* display: flex;\n justify-content: center; */\n max-width: 680px;\n margin: 20px 0;\n}\n\n.container {\n max-width: 980px;\n margin: 0 auto;\n}\n\n.test-result {\n margin-top: 40px;\n}\n\n\n.test-details {\n margin-top: -1px;\n cursor: pointer;\n padding: 20px;\n border-top: 1px solid #ccc;\n}\n.test-details:hover {\n background-color: #d3d3d3;\n}\n\n.test-info {\n display: flex;\n}\n.test-name{\n flex-grow: 1;\n font-weight: bold;\n font-size: medium;\n}\n\n.failed{\n font-size: small;\n}\n.test-file-path {\n color: #6e7781;\n margin-top: 10px;\n}",".test-result {\n font-family: Arial, sans-serif;\n margin: 20px;\n padding: 20px;\n border: 1px solid #ccc;\n border-radius: 8px;\n background-color: #f9f9f9;\n}\n\n.test-summary {\n margin-bottom: 20px;\n}\n\n.test-summary div {\n margin: 5px 0;\n}\n\n.test-project,\n.test-file,\n.test-status,\n.test-time {\n font-weight: bold;\n}\n\n.test-status.failed {\n color: red;\n}\n\n.test-details {\n margin-top: 20px;\n}\n\n.test-name {\n font-size: 1.2em;\n margin-bottom: 10px;\n}\n\n.test-duration {\n color: #555;\n}\n\n.ant-collapse-content-box {\n padding: 0!important;\n}","html,\nbody {\n padding: 0;\n margin: 0;\n}\n.rspress-nav {\n transition: 0.2s;\n}\n:root {\n --modern-sidebar-width: 0 !important;\n --modern-aside-width: 0 !important;\n --modern-preview-padding: 0 !important;\n}\n.modern-doc-layout,\n.modern-doc {\n width: 100% !important;\n margin: 0 !important;\n padding: 0 !important;\n height: 100vh;\n}\n.modern-sidebar,\nheader.w-full {\n display: none !important;\n}\n.modern-doc-container {\n padding: 0 !important;\n}\nfooter.mt-8 {\n display: none;\n}\n.page-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n color: #3b3b3b;\n font-family:\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n \"Noto Sans\",\n Helvetica,\n Arial,\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\";\n font-size: 14px;\n border-top: 1px solid #E5E5E5;\n border-bottom: 1px solid #E5E5E5;\n}\n.ant-layout {\n flex-grow: 1;\n height: 100%;\n}\n.main-right {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n}\n.main-right .main-content {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n overflow: hidden;\n background: #FFF;\n}\n.main-right.uploader-wrapper {\n box-sizing: border-box;\n margin: auto;\n max-width: 800px;\n flex-direction: column;\n justify-content: center;\n}\n.main-right.uploader-wrapper .uploader {\n width: 100%;\n}\n.main-right.uploader-wrapper .demo-loader {\n width: 100%;\n text-align: center;\n margin-top: 10px;\n}\n.main-right .main-canvas-container {\n flex-grow: 1;\n height: 100%;\n background: #ffffff;\n overflow-x: hidden;\n overflow-y: scroll;\n border-left: 1px solid #E5E5E5;\n}\n.main-right .main-side {\n box-sizing: border-box;\n overflow-y: scroll;\n}\n.main-right .json-content {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n",".detail-side h2 {\n padding-top: 0;\n margin-top: 0;\n margin-bottom: 4px;\n}\n.detail-side .ant-tag {\n margin-top: 2px;\n}\n.detail-side .meta-kv {\n padding: 10px 10px calc(10px + 4px);\n}\n.detail-side .meta-kv .meta {\n box-sizing: border-box;\n padding: 2px 0;\n width: 100%;\n display: flex;\n flex-direction: row;\n line-height: 1.5;\n}\n.detail-side .meta-kv .meta .meta-key {\n width: 100px;\n text-align: right;\n padding-right: 16px;\n}\n.detail-side .meta-kv .meta .meta-value {\n flex: 1 1;\n}\n.detail-side .item-list {\n padding: 10px 10px;\n cursor: default;\n margin-bottom: 10px;\n}\n.detail-side .item-list .item {\n padding: 16px 10px 10px;\n transition: 0.1s;\n border: 1px solid #DDD;\n border-radius: 5px;\n margin-bottom: 10px;\n position: relative;\n}\n.detail-side .item-list .item.item-lite {\n border: none;\n padding: 0;\n}\n.detail-side .item-list .item-highlight {\n color: #FFF;\n}\n.detail-side .item-list .item-highlight .subtitle {\n color: #CCC;\n}\n.detail-side .item-list .item-extra {\n position: absolute;\n right: 10px;\n top: 10px;\n color: #777;\n}\n.detail-side .item-list .title-right-padding {\n padding-right: 15px;\n}\n.detail-side .item-list .title {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 5px;\n}\n.detail-side .item-list .title .title-tag {\n display: inline-block;\n margin-left: 6px;\n color: #777;\n font-size: 14px;\n line-height: 18px;\n}\n.detail-side .item-list .subtitle {\n font-weight: normal;\n font-size: 14px;\n color: #777;\n}\n.detail-side .item-list .description {\n margin-top: 5px;\n}\n.detail-side .item-list .description-content {\n font-size: 14px;\n margin-top: 10px;\n white-space: break-spaces;\n word-wrap: break-word;\n margin: 0;\n}\n.detail-side .item-list .element-button:hover {\n color: #fff;\n background: #F9483E;\n}\n.detail-side .item-list .section-button:hover {\n color: #fff;\n background: #01204E;\n}\n.detail-side pre {\n text-wrap: balance;\n}\n.detail-side .item-list-space-up {\n margin-top: 10px;\n}\n",".task-list-name {\n padding: 2px 10px;\n font-weight: bold;\n background: #F8F8F8;\n border-top: 1px solid #E5E5E5;\n border-bottom: 1px solid #E5E5E5;\n margin-top: -1px;\n}\n",".side-bar {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n border-right: 1px solid #E5E5E5;\n overflow: auto;\n background: #F8F8F8;\n}\n.side-bar .brand {\n padding: 10px 5px;\n cursor: pointer;\n display: flex;\n}\n.side-bar .task-meta-section {\n margin-top: 6px;\n}\n.side-bar .task-meta {\n color: #777;\n font-weight: normal;\n padding-left: 10px;\n}\n.side-bar .side-seperator {\n border-top: 1px solid none;\n}\n.side-bar .side-seperator.side-seperator-line {\n border-top: 1px solid #E5E5E5;\n}\n.side-bar .side-seperator.side-seperator-space-up {\n margin-top: 10px;\n}\n.side-bar .side-seperator.side-seperator-space-down {\n margin-bottom: 10px;\n}\n.side-bar .side-sub-title {\n padding: 0 10px;\n margin-bottom: 6px;\n}\n.side-bar .name-status {\n font-size: 12px;\n display: inline-block;\n margin-right: 6px;\n}\n.side-bar .side-item {\n cursor: pointer;\n transition: 0.1s;\n padding: 2px 0;\n}\n.side-bar .side-item:hover {\n background: #dcdcdc80;\n}\n.side-bar .side-item.selected {\n background: #bfc4da80;\n}\n.side-bar .side-item .side-item-content {\n padding: 0 10px 0 calc(10px + 18px);\n}\n.side-bar .side-item-name {\n padding: 0 10px 0 calc(10px + 18px);\n position: relative;\n display: flex;\n justify-content: space-between;\n}\n.side-bar .side-item-name .status-icon {\n position: absolute;\n left: 10px;\n display: inline-block;\n color: #AAA;\n font-size: 12px;\n line-height: 10px;\n top: 50%;\n margin-top: -5px;\n}\n.side-bar .side-item-name .status-icon-success {\n color: #2B8243;\n}\n.side-bar .side-item-name .status-icon-fail {\n color: #ff0a0a;\n}\n.side-bar .side-item-name .status-text {\n color: #777;\n}\n.side-bar .bottom-controls {\n padding: 10px 10px;\n text-align: left;\n text-align: center;\n}\n",".detail-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 10px;\n background: #FFF;\n}\n.detail-panel .ant-segmented {\n padding: 0;\n}\n.detail-panel .view-switcher {\n margin-bottom: 10px;\n flex-shrink: 0;\n}\n.detail-panel .detail-content {\n box-sizing: border-box;\n justify-content: center;\n flex-direction: column;\n display: flex;\n flex-grow: 1;\n}\n.detail-panel .blackboard {\n margin: 0 auto;\n}\n.detail-panel .screenshot-item {\n margin-bottom: 10px;\n}\n.detail-panel .screenshot-item .screenshot-item-title {\n margin-bottom: 5px;\n}\n.detail-panel .screenshot-item img {\n border: 1px solid #888;\n max-width: 100%;\n}\n",".blackboard .footer {\n color: #aaa;\n}\n.blackboard ul {\n padding-left: 0px;\n}\n.blackboard li {\n list-style: none;\n}\n.blackboard .bottom-tip {\n height: 30px;\n}\n.blackboard .bottom-tip-item {\n max-width: 500px;\n color: #AAA;\n text-overflow: ellipsis;\n word-wrap: break-word;\n}\n.blackboard-filter {\n margin: 10px 0;\n}\n.blackboard-main-content canvas {\n width: 100%;\n border: 1px solid #888;\n}\n",".global-hover-preview {\n position: fixed;\n display: block;\n max-width: 400px;\n max-height: 400px;\n overflow: hidden;\n z-index: 10;\n text-align: center;\n border: 1px solid #E5E5E5;\n box-sizing: border-box;\n background: #F8F8F8;\n box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.2);\n}\n.global-hover-preview img {\n max-width: 400px;\n max-height: 400px;\n width: auto;\n height: auto;\n}\n",".timeline-wrapper {\n flex-basis: 110px;\n flex-grow: 0;\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n border-bottom: 1px solid #E5E5E5;\n position: relative;\n box-sizing: border-box;\n}\n.timeline-wrapper .timeline-canvas-wrapper {\n width: 100%;\n height: 100%;\n}\n.timeline-wrapper canvas {\n width: 100%;\n height: 100%;\n}\n"],"names":[],"mappings":"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"}
|