@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 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.extractTextWithPositionDFS()`;
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
- for (const item of elements) {
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
- try {
471
- await taskExecutor.append(this.wrapExecutorWithScreenshot(planningTask));
472
- await taskExecutor.flush();
473
- this.executionDump = taskExecutor.dump();
474
- const executables = await this.convertPlanToExecutable(plans);
475
- await taskExecutor.append(executables);
476
- await taskExecutor.flush();
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
- try {
513
- await taskExecutor.append(this.wrapExecutorWithScreenshot(queryTask));
514
- await taskExecutor.flush();
515
- this.executionDump = taskExecutor.dump();
516
- } catch (e) {
517
- this.executionDump = taskExecutor.dump();
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 assertionResult = await taskExecutor.flush();
536
- this.executionDump = taskExecutor.dump();
537
- return assertionResult;
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: `playwright-${this.testId}`,
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
- let error;
569
- try {
570
- await this.taskExecutor.action(taskPrompt);
571
- } catch (e) {
572
- error = e;
573
- }
574
- if (this.taskExecutor.executionDump) {
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
- let error;
585
- let result;
586
- try {
587
- result = await this.taskExecutor.query(demand);
588
- } catch (e) {
589
- error = e;
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
- if (error) {
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 assertionResult = await this.taskExecutor.assert(assertion);
603
- if (this.taskExecutor.executionDump) {
604
- this.appendDump(this.taskExecutor.executionDump);
605
- this.writeOutActionDumps();
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: ${assertionResult.thought}`;
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.extractTextWithPositionDFS()`;
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
- for (const item of elements) {
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
- try {
494
- await taskExecutor.append(this.wrapExecutorWithScreenshot(planningTask));
495
- await taskExecutor.flush();
496
- this.executionDump = taskExecutor.dump();
497
- const executables = await this.convertPlanToExecutable(plans);
498
- await taskExecutor.append(executables);
499
- await taskExecutor.flush();
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
- try {
536
- await taskExecutor.append(this.wrapExecutorWithScreenshot(queryTask));
537
- await taskExecutor.flush();
538
- this.executionDump = taskExecutor.dump();
539
- } catch (e) {
540
- this.executionDump = taskExecutor.dump();
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 assertionResult = await taskExecutor.flush();
559
- this.executionDump = taskExecutor.dump();
560
- return assertionResult;
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: `playwright-${this.testId}`,
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
- let error;
592
- try {
593
- await this.taskExecutor.action(taskPrompt);
594
- } catch (e) {
595
- error = e;
596
- }
597
- if (this.taskExecutor.executionDump) {
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
- let error;
608
- let result;
609
- try {
610
- result = await this.taskExecutor.query(demand);
611
- } catch (e) {
612
- error = e;
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
- if (error) {
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 assertionResult = await this.taskExecutor.assert(assertion);
626
- if (this.taskExecutor.executionDump) {
627
- this.appendDump(this.taskExecutor.executionDump);
628
- this.writeOutActionDumps();
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: ${assertionResult.thought}`;
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
- extractTextWithPositionDFS: () => extractTextWithPositionDFS
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 extractTextWithPositionDFS(initNode = container) {
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 extractTextWithPositionDFS(initNode?: Node): ElementInfo[];
26
+ declare function extractTextWithPosition(initNode?: Node): ElementInfo[];
27
27
 
28
- export { extractTextWithPositionDFS };
28
+ export { extractTextWithPosition };
@@ -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, ExecutionDump, InsightExtractParam, InsightAssertionResponse, GroupedActionDump } from '@midscene/core';
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<void>;
121
- query(demand: InsightExtractParam): Promise<any>;
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/160.5ac2287a.js"></script><script defer="defer" src="/static/js/index.56e33cc4.js"></script><link href="/static/css/index.eccd04e1.css" rel="stylesheet"></head><body><div id="root"><!--<?- html ?>--></div><!--<?- chunksMap.js ?>--><!--<?- SSRDataScript ?>--></body></html>
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 26px}.side-bar .side-item-name{display:flex;justify-content:space-between;padding:0 10px 0 26px;position:relative}.side-bar .side-item-name .status-icon{color:#aaa;display:inline-block;font-size:10px;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
+ .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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"}