android-midscene-automation 0.1.30 → 0.1.32

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +16 -26
  2. package/README.md +16 -26
  3. package/bin/sync-readme-docs.mjs +49 -0
  4. package/index.html +1 -1
  5. package/package.json +8 -8
  6. package/remote-agent/index.ts +1 -1
  7. package/server/appium-recorder/appium-runner.ts +97 -43
  8. package/server/appium-recorder/bounded-loop.ts +118 -0
  9. package/server/appium-recorder/history-capture.ts +34 -0
  10. package/server/appium-recorder/report.ts +1 -1
  11. package/server/appium-recorder/repository.ts +9 -0
  12. package/server/appium-recorder/routes.ts +29 -5
  13. package/server/appium-recorder/run-history.ts +34 -0
  14. package/src/appium-recorder/AppiumPage.vue +114 -54
  15. package/src/appium-recorder/RunHistoryDialog.vue +153 -0
  16. package/src/appium-recorder/bounded-loop.ts +66 -0
  17. package/src/appium-recorder/components/BreakLoopSettings.vue +29 -0
  18. package/src/appium-recorder/components/ComponentInspector.vue +26 -0
  19. package/src/appium-recorder/components/ComponentTree.vue +24 -4
  20. package/src/appium-recorder/components/FlowCanvas.vue +19 -1
  21. package/src/appium-recorder/components/FlowNodeCard.vue +6 -3
  22. package/src/appium-recorder/components/FlowNodeSearch.vue +62 -0
  23. package/src/appium-recorder/components/FlowStepEditor.vue +9 -4
  24. package/src/appium-recorder/components/LoopSettings.vue +37 -0
  25. package/src/appium-recorder/components/NestedConditionBranches.vue +11 -3
  26. package/src/appium-recorder/components/NodeDetail.vue +30 -6
  27. package/src/appium-recorder/components/RecordedSteps.vue +24 -4
  28. package/src/appium-recorder/components/RecorderWorkspace.vue +132 -0
  29. package/src/appium-recorder/components/VisualChangeEndPicker.vue +21 -0
  30. package/src/appium-recorder/flow-copy.ts +1 -0
  31. package/src/appium-recorder/flow-graph.ts +4 -9
  32. package/src/appium-recorder/flow-labels.ts +7 -0
  33. package/src/appium-recorder/flow-merge.ts +3 -2
  34. package/src/appium-recorder/flow-normalize.ts +1 -0
  35. package/src/appium-recorder/flow-search.ts +29 -0
  36. package/src/appium-recorder/node-locators.ts +25 -0
  37. package/src/appium-recorder/run-history.ts +50 -0
  38. package/src/appium-recorder/tree.ts +2 -5
  39. package/src/appium-recorder/types.ts +7 -0
  40. package/src/appium-recorder/visual-change-pairs.ts +16 -10
  41. package/src/components/device/DevicePreviewPanel.vue +62 -10
  42. package/src/style.css +24 -7
  43. package/src/ui-refresh.css +40 -0
package/src/style.css CHANGED
@@ -1401,6 +1401,7 @@ select {
1401
1401
 
1402
1402
  .appium-replay-dialog.el-dialog {
1403
1403
  display: flex;
1404
+ padding: 16px;
1404
1405
  width: min(820px, calc(100vw - 32px)) !important;
1405
1406
  height: min(620px, calc(100vh - 64px));
1406
1407
  min-width: 420px;
@@ -1421,8 +1422,16 @@ select {
1421
1422
  flex: 1 1 auto;
1422
1423
  min-height: 0;
1423
1424
  overflow: hidden;
1424
- padding-top: 8px;
1425
- padding-bottom: 8px;
1425
+ padding: 8px 0 0;
1426
+ }
1427
+
1428
+ .appium-replay-dialog > .el-dialog__header {
1429
+ padding: 0 0 16px;
1430
+ border-bottom: 0;
1431
+ }
1432
+
1433
+ .appium-replay-dialog > .el-dialog__footer {
1434
+ padding: 16px 0 0;
1426
1435
  }
1427
1436
 
1428
1437
  .appium-replay-dialog .appium-replay-output {
@@ -2882,6 +2891,11 @@ select {
2882
2891
  width: 340px;
2883
2892
  }
2884
2893
 
2894
+ .appium-flow-graph-node--search-highlighted .appium-flow-step-card {
2895
+ outline: 3px solid #168aad;
2896
+ outline-offset: 4px;
2897
+ }
2898
+
2885
2899
  .appium-flow-graph-node--insert {
2886
2900
  width: 34px;
2887
2901
  height: 34px;
@@ -2913,12 +2927,15 @@ select {
2913
2927
  bottom: 0;
2914
2928
  }
2915
2929
 
2916
- .appium-flow-graph-node--split .appium-flow-handle--top {
2930
+ /* Invisible split handles share one point; Vue Flow's 5px minimum creates a gap. */
2931
+ .appium-flow-graph-node--split .appium-flow-handle {
2932
+ width: 0;
2933
+ height: 0;
2934
+ min-width: 0;
2935
+ min-height: 0;
2917
2936
  top: 50%;
2918
- }
2919
-
2920
- .appium-flow-graph-node--split .appium-flow-handle--bottom {
2921
- bottom: 50%;
2937
+ bottom: auto;
2938
+ transform: translate(-50%, -50%);
2922
2939
  }
2923
2940
 
2924
2941
  .appium-flow-start-card {
@@ -530,6 +530,28 @@ body {
530
530
  background: #111827;
531
531
  }
532
532
 
533
+ .el-button.recorder-panel-tool {
534
+ --el-button-text-color: #606266;
535
+ --el-button-border-color: #dcdfe6;
536
+ --el-button-disabled-text-color: #a8abb2;
537
+ --el-button-disabled-border-color: #e4e7ed;
538
+ --el-color-primary: #409eff;
539
+ --el-color-primary-light-3: #79bbff;
540
+ --el-color-primary-light-5: #a0cfff;
541
+ --el-color-primary-light-7: #c6e2ff;
542
+ --el-color-primary-light-9: #ecf5ff;
543
+ --el-color-primary-dark-2: #337ecc;
544
+ width: 30px;
545
+ min-width: 30px;
546
+ height: 32px;
547
+ min-height: 32px;
548
+ padding: 0;
549
+ margin: 0;
550
+ border-radius: 3px;
551
+ font-size: 12px;
552
+ font-weight: 400;
553
+ }
554
+
533
555
  /* Keep the Appium flow editor on its original Element Plus theme. */
534
556
  .appium-recorded-steps-panel,
535
557
  .appium-flow-dialog,
@@ -559,6 +581,10 @@ body {
559
581
  }
560
582
 
561
583
  .appium-flow-dialog.el-dialog {
584
+ display: flex;
585
+ flex-direction: column;
586
+ height: 86dvh;
587
+ max-height: calc(100dvh - 32px);
562
588
  overflow: visible;
563
589
  padding: 16px;
564
590
  border: 0;
@@ -567,6 +593,7 @@ body {
567
593
  }
568
594
 
569
595
  .appium-flow-dialog .el-dialog__header {
596
+ flex: none;
570
597
  padding: 0 0 16px;
571
598
  border-bottom: 0;
572
599
  }
@@ -577,9 +604,22 @@ body {
577
604
  }
578
605
 
579
606
  .appium-flow-dialog .el-dialog__body {
607
+ display: flex;
608
+ flex-direction: column;
609
+ flex: 1;
610
+ min-height: 0;
580
611
  padding: 8px 0 0;
581
612
  }
582
613
 
614
+ .appium-flow-dialog__toolbar { flex: none; }
615
+
616
+ /* Keep the canvas within the centered dialog even on short viewports. */
617
+ .appium-flow-dialog .appium-flow-canvas--dialog.appium-flow-canvas--vue {
618
+ flex: 1;
619
+ height: auto;
620
+ min-height: 0;
621
+ }
622
+
583
623
  .appium-flow-dialog .el-dialog__footer {
584
624
  padding: 16px 0 0;
585
625
  }