@acutis/cli 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/4RAEZKK5.js +1 -0
  3. package/.output/public/_nuxt/B71L_ar8.js +1 -0
  4. package/.output/public/_nuxt/{CsAwRnSX.js → B8-AOuPY.js} +1 -1
  5. package/.output/public/_nuxt/BDJSpxa5.js +1 -0
  6. package/.output/public/_nuxt/BSTaqC8B.js +1 -0
  7. package/.output/public/_nuxt/BX0w1sCd.js +64 -0
  8. package/.output/public/_nuxt/BZkyScXE.js +7 -0
  9. package/.output/public/_nuxt/Bcy6XGvf.js +1 -0
  10. package/.output/public/_nuxt/BwUN2VDn.js +28 -0
  11. package/.output/public/_nuxt/C7ujW0dH.js +1 -0
  12. package/.output/public/_nuxt/CCTDX4Ow.js +1 -0
  13. package/.output/public/_nuxt/CGBjV6IE.js +3 -0
  14. package/.output/public/_nuxt/CJwIJ5vo.js +1 -0
  15. package/.output/public/_nuxt/CRRnxrgg.js +1 -0
  16. package/.output/public/_nuxt/CW-iqL9y.js +1 -0
  17. package/.output/public/_nuxt/CX9rRDYY.js +1 -0
  18. package/.output/public/_nuxt/Cc9wzr_w.js +1 -0
  19. package/.output/public/_nuxt/Cfk1Mt0g.js +1 -0
  20. package/.output/public/_nuxt/Cha4KRz0.js +1 -0
  21. package/.output/public/_nuxt/D229JSjk.js +1 -0
  22. package/.output/public/_nuxt/D24Vvzw2.js +1 -0
  23. package/.output/public/_nuxt/DRoB9fQQ.js +1 -0
  24. package/.output/public/_nuxt/DZ5wax3g.js +1 -0
  25. package/.output/public/_nuxt/DZkgJHFm.js +1 -0
  26. package/.output/public/_nuxt/PIShll5e.js +1 -0
  27. package/.output/public/_nuxt/_oJUkNQ2.js +1 -0
  28. package/.output/public/_nuxt/builds/latest.json +1 -1
  29. package/.output/public/_nuxt/builds/meta/8fa7f7b1-bb54-45e2-9cfc-6ff62eb217e3.json +1 -0
  30. package/.output/public/_nuxt/{entry.BmTN_nlL.css → entry.cOeTFjBb.css} +1 -1
  31. package/.output/public/_nuxt/jaiNplxU.js +1 -0
  32. package/.output/public/_nuxt/{Dn-SWUOQ.js → nocvyJKp.js} +1 -1
  33. package/.output/server/chunks/_/auth2.mjs +2 -2
  34. package/.output/server/chunks/_/environment.mjs +2 -2
  35. package/.output/server/chunks/_/execution.mjs +6 -4
  36. package/.output/server/chunks/_/execution.mjs.map +1 -1
  37. package/.output/server/chunks/_/generation.mjs +2 -2
  38. package/.output/server/chunks/_/project.mjs +1 -1
  39. package/.output/server/chunks/_/project.service.mjs +2 -2
  40. package/.output/server/chunks/_/scenario2.mjs +88 -6
  41. package/.output/server/chunks/_/scenario2.mjs.map +1 -1
  42. package/.output/server/chunks/build/{Alert-CGPbjyet.mjs → Alert-BJf39Ayb.mjs} +1 -1
  43. package/.output/server/chunks/build/{Alert-CGPbjyet.mjs.map → Alert-BJf39Ayb.mjs.map} +1 -1
  44. package/.output/server/chunks/build/Badge-BMpCypXw.mjs +394 -0
  45. package/.output/server/chunks/build/Badge-BMpCypXw.mjs.map +1 -0
  46. package/.output/server/chunks/build/{Container-Bw8GVIe-.mjs → Container-D0WjluxO.mjs} +1 -1
  47. package/.output/server/chunks/build/{Container-Bw8GVIe-.mjs.map → Container-D0WjluxO.mjs.map} +1 -1
  48. package/.output/server/chunks/build/ContextMenu-CC085wXq.mjs +1746 -0
  49. package/.output/server/chunks/build/ContextMenu-CC085wXq.mjs.map +1 -0
  50. package/.output/server/chunks/build/{Pagination-BF2ykxf_.mjs → Pagination-DxUglDxC.mjs} +1 -1
  51. package/.output/server/chunks/build/{Pagination-BF2ykxf_.mjs.map → Pagination-DxUglDxC.mjs.map} +1 -1
  52. package/.output/server/chunks/build/{_...scenario_-CPwSmhfV.mjs → _...scenario_-mkuUQnXV.mjs} +48 -28
  53. package/.output/server/chunks/build/_...scenario_-mkuUQnXV.mjs.map +1 -0
  54. package/.output/server/chunks/build/_run_-CURVtzqt.mjs +649 -0
  55. package/.output/server/chunks/build/_run_-CURVtzqt.mjs.map +1 -0
  56. package/.output/server/chunks/build/{_slug_-DjtFCLa7.mjs → _slug_-CCufladN.mjs} +373 -138
  57. package/.output/server/chunks/build/{_slug_-DjtFCLa7.mjs.map → _slug_-CCufladN.mjs.map} +1 -1
  58. package/.output/server/chunks/build/error-404-B5fzVPdQ.mjs +1 -1
  59. package/.output/server/chunks/build/error-500-Be62wrWs.mjs +1 -1
  60. package/.output/server/chunks/build/{modal-styles.BuQzMyBB.mjs → modal-styles.CyKDxGJQ.mjs} +3 -3
  61. package/.output/server/chunks/build/modal-styles.CyKDxGJQ.mjs.map +1 -0
  62. package/.output/server/chunks/build/{origin-D49r5-BY.mjs → origin-COKNa406.mjs} +102 -396
  63. package/.output/server/chunks/build/{origin-D49r5-BY.mjs.map → origin-COKNa406.mjs.map} +1 -1
  64. package/.output/server/chunks/build/{pages-Dve6n3fN.mjs → pages-BoaPn4t_.mjs} +171 -51
  65. package/.output/server/chunks/build/{pages-Dve6n3fN.mjs.map → pages-BoaPn4t_.mjs.map} +1 -1
  66. package/.output/server/chunks/build/plural-DvfNYUEX.mjs +93 -0
  67. package/.output/server/chunks/build/plural-DvfNYUEX.mjs.map +1 -0
  68. package/.output/server/chunks/build/report-ISc2vlII.mjs +725 -0
  69. package/.output/server/chunks/build/report-ISc2vlII.mjs.map +1 -0
  70. package/.output/server/chunks/build/run-stream-Dfh0fAdN.mjs +198 -0
  71. package/.output/server/chunks/build/run-stream-Dfh0fAdN.mjs.map +1 -0
  72. package/.output/server/chunks/build/{tags-CU5wN20i.mjs → tags-BiGI0PZP.mjs} +16 -299
  73. package/.output/server/chunks/build/tags-BiGI0PZP.mjs.map +1 -0
  74. package/.output/server/chunks/build/{telemetria-CU1QSpLB.mjs → telemetria-CXZfYngH.mjs} +3 -3
  75. package/.output/server/chunks/build/{telemetria-CU1QSpLB.mjs.map → telemetria-CXZfYngH.mjs.map} +1 -1
  76. package/.output/server/chunks/nitro/nitro.mjs +307 -228
  77. package/.output/server/chunks/routes/api/projects/_slug/run-stream.get.mjs +5 -1
  78. package/.output/server/chunks/routes/api/projects/_slug/run-stream.get.mjs.map +1 -1
  79. package/.output/server/chunks/routes/api/projects/_slug/runs.get.mjs +79 -0
  80. package/.output/server/chunks/routes/api/projects/_slug/runs.get.mjs.map +1 -0
  81. package/.output/server/chunks/routes/api/telemetry/report.post.mjs +1 -1
  82. package/.output/server/chunks/routes/renderer.mjs +3 -3
  83. package/.output/server/chunks/routes/ws.mjs +1 -1
  84. package/.output/server/chunks/virtual/entry.mjs +9336 -8497
  85. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  86. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  87. package/.output/server/chunks/virtual/styles.mjs +1 -1
  88. package/.output/server/package.json +1 -1
  89. package/package.json +1 -1
  90. package/.output/public/_nuxt/2nD-p2HC.js +0 -1
  91. package/.output/public/_nuxt/B9s6bjC6.js +0 -1
  92. package/.output/public/_nuxt/BNt3M20G.js +0 -3
  93. package/.output/public/_nuxt/BVORrxe1.js +0 -1
  94. package/.output/public/_nuxt/BWJi3RB7.js +0 -7
  95. package/.output/public/_nuxt/BZKoKeJ4.js +0 -1
  96. package/.output/public/_nuxt/BdD531YY.js +0 -1
  97. package/.output/public/_nuxt/Bim2Ilco.js +0 -1
  98. package/.output/public/_nuxt/BormXq2m.js +0 -1
  99. package/.output/public/_nuxt/Bv4T7S6_.js +0 -1
  100. package/.output/public/_nuxt/BwcOmYtM.js +0 -1
  101. package/.output/public/_nuxt/CJJvNaNU.js +0 -1
  102. package/.output/public/_nuxt/Dq_3AVr2.js +0 -1
  103. package/.output/public/_nuxt/builds/meta/44d41e51-6d69-442c-af96-a368d70732a5.json +0 -1
  104. package/.output/public/_nuxt/jEu0WM6o.js +0 -28
  105. package/.output/public/_nuxt/x-Ln6s2E.js +0 -64
  106. package/.output/server/chunks/build/_...scenario_-CPwSmhfV.mjs.map +0 -1
  107. package/.output/server/chunks/build/modal-styles.BuQzMyBB.mjs.map +0 -1
  108. package/.output/server/chunks/build/tags-CU5wN20i.mjs.map +0 -1
@@ -1,9 +1,13 @@
1
- import { f as useRoute, g as useFetch, h as createError$1, k as icon_default, O as _sfc_main$4$1, _ as _sfc_main$6, m as _sfc_main$7, n as navigateTo, $ as $fetch$1, a as useComponentProps, b as useAppConfig, v as useForwardProps, w as reactivePick, t as tv, Q as DropdownMenuRoot_default, S as DropdownMenuTrigger_default, T as DropdownMenuArrow_default, U as refreshNuxtData, u as useNotify, l as _sfc_main$7$1, V as _sfc_main$5$1, c as useLocale, W as useFilter, X as usePortal, Y as useForwardPropsEmits, Z as reactiveOmit, a0 as createReusableTemplate, a1 as isArrayOfArray, e as _sfc_main$5$2, d as _sfc_main$3$1, x as get, a2 as _sfc_main$8$1, a3 as DropdownMenu, a4 as FieldGroupReset, a5 as _sfc_main$1$1, a6 as pickLinkProps, a7 as _sfc_main$2$2, a8 as omit, p as modal_default$4, q as _sfc_main$1$2, a9 as fieldGroupInjectionKey, P as Primitive, B as useVModel, z as useForwardExpose, C as useId$1, aa as useEventListener, E as Presence_default, F as createContext } from '../virtual/entry.mjs';
2
- import { p as projectOrigin, _ as _sfc_main$2$1, b as _sfc_main$8 } from './origin-D49r5-BY.mjs';
3
- import { _ as _sfc_main$4 } from './Container-Bw8GVIe-.mjs';
4
- import { _ as _sfc_main$5 } from './Alert-CGPbjyet.mjs';
5
- import { a as useRunStream, u as useGitSync, G as GIT_CONFLICT_HINT, k as GIT_UNAVAILABLE_HINT, b as useWebdriver, r as reportUrlFor, s as setup_default, m as modal_default$1$1, t as tagColor, g as modal_default$3, f as confirm_default, e as empty_default$1, p as phrases_default, l as failure_default, n as steps_default } from './tags-CU5wN20i.mjs';
6
- import { defineComponent, computed, ref, withAsyncContext, watch, mergeProps, unref, withCtx, createVNode, isRef, toDisplayString, openBlock, createBlock, createCommentVNode, Fragment, renderList, createTextVNode, useSlots, useModel, toRef, renderSlot, createSlots, mergeModels, resolveDynamicComponent, withModifiers, withKeys, provide, useId, toRefs, nextTick, useSSRContext } from 'vue';
1
+ import { f as useRoute, g as useFetch, l as createError$1, u as useNotify, i as icon_default, Q as _sfc_main$4$1, _ as _sfc_main$7, p as _sfc_main$8, o as navigateTo, $ as $fetch$1, a as useComponentProps, b as useAppConfig, v as useForwardProps, w as reactivePick, t as tv, S as DropdownMenuRoot_default, T as DropdownMenuTrigger_default, U as DropdownMenuArrow_default, V as refreshNuxtData, h as _sfc_main$7$1, W as _sfc_main$5$1, c as useLocale, X as useFilter, Y as usePortal, Z as useForwardPropsEmits, a0 as reactiveOmit, a1 as createReusableTemplate, a2 as isArrayOfArray, e as _sfc_main$5$2, d as _sfc_main$3$1, x as get, a3 as _sfc_main$a, a4 as DropdownMenu, a5 as FieldGroupReset, a6 as _sfc_main$1$1, a7 as pickLinkProps, a8 as _sfc_main$2$1, a9 as omit, r as modal_default$4, s as _sfc_main$1$2, aa as fieldGroupInjectionKey, P as Primitive, B as useVModel, z as useForwardExpose, C as useId$1, ab as useEventListener, E as Presence_default, F as createContext } from '../virtual/entry.mjs';
2
+ import { p as projectOrigin, c as confirm_default, a as _sfc_main$c } from './origin-COKNa406.mjs';
3
+ import { _ as _sfc_main$9 } from './Pagination-DxUglDxC.mjs';
4
+ import { _ as _sfc_main$4 } from './Container-D0WjluxO.mjs';
5
+ import { _ as _sfc_main$6 } from './Alert-BJf39Ayb.mjs';
6
+ import { _ as _sfc_main$5 } from './Badge-BMpCypXw.mjs';
7
+ import { _ as _sfc_main$b } from './ContextMenu-CC085wXq.mjs';
8
+ import { u as useRunStream, e as empty_default$1, r as reportUrlFor } from './run-stream-Dfh0fAdN.mjs';
9
+ import { u as useGitSync, G as GIT_CONFLICT_HINT, g as GIT_UNAVAILABLE_HINT, a as useWebdriver, s as setup_default, m as modal_default$1$1, d as modal_default$3, t as tagColor, p as phrases_default, h as failure_default, i as steps_default } from './tags-BiGI0PZP.mjs';
10
+ import { defineComponent, computed, ref, withAsyncContext, watch, nextTick, mergeProps, unref, withCtx, createVNode, isRef, toDisplayString, openBlock, createBlock, createTextVNode, createCommentVNode, Fragment, renderList, useSlots, useModel, toRef, renderSlot, createSlots, mergeModels, resolveDynamicComponent, withModifiers, withKeys, provide, useId, toRefs, useSSRContext } from 'vue';
7
11
  import { o as defu } from '../nitro/nitro.mjs';
8
12
  import { ssrRenderComponent, ssrRenderAttr, ssrInterpolate, ssrRenderList, ssrRenderSlot, ssrRenderAttrs, ssrRenderClass, ssrRenderVNode } from 'vue/server-renderer';
9
13
  import 'unhead/plugins';
@@ -303,7 +307,7 @@ var inline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
303
307
  }
304
308
  }
305
309
  return (_ctx, _push, _parent, _attrs) => {
306
- const _component_UInput = _sfc_main$7;
310
+ const _component_UInput = _sfc_main$8;
307
311
  const _component_BaseButtonIcon = icon_default;
308
312
  const _component_UTooltip = _sfc_main$7$1;
309
313
  if (unref(editing)) {
@@ -355,11 +359,11 @@ var inline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
355
359
  });
356
360
  //#endregion
357
361
  //#region app/components/project/rename/inline.vue
358
- var _sfc_setup$11 = inline_vue_vue_type_script_setup_true_lang_default.setup;
362
+ var _sfc_setup$12 = inline_vue_vue_type_script_setup_true_lang_default.setup;
359
363
  inline_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
360
364
  const ssrContext = useSSRContext();
361
365
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/rename/inline.vue");
362
- return _sfc_setup$11 ? _sfc_setup$11(props, ctx) : void 0;
366
+ return _sfc_setup$12 ? _sfc_setup$12(props, ctx) : void 0;
363
367
  };
364
368
  var inline_default = Object.assign(inline_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectRenameInline" });
365
369
  //#endregion
@@ -437,11 +441,11 @@ var _sfc_main$3 = {
437
441
  };
438
442
  }
439
443
  };
440
- var _sfc_setup$10 = _sfc_main$3.setup;
444
+ var _sfc_setup$11 = _sfc_main$3.setup;
441
445
  _sfc_main$3.setup = (props, ctx) => {
442
446
  const ssrContext = useSSRContext();
443
447
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/FieldGroup.vue");
444
- return _sfc_setup$10 ? _sfc_setup$10(props, ctx) : void 0;
448
+ return _sfc_setup$11 ? _sfc_setup$11(props, ctx) : void 0;
445
449
  };
446
450
  //#endregion
447
451
  //#region app/components/project/environments/select.vue?vue&type=script&setup=true&lang.ts
@@ -476,7 +480,7 @@ var select_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
476
480
  }
477
481
  return (_ctx, _push, _parent, _attrs) => {
478
482
  const _component_UTooltip = _sfc_main$7$1;
479
- const _component_UButton = _sfc_main$6;
483
+ const _component_UButton = _sfc_main$7;
480
484
  const _component_UFieldGroup = _sfc_main$3;
481
485
  const _component_USelectMenu = _sfc_main$5$1;
482
486
  const _component_BaseButtonIcon = icon_default;
@@ -563,11 +567,11 @@ var select_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
563
567
  });
564
568
  //#endregion
565
569
  //#region app/components/project/environments/select.vue
566
- var _sfc_setup$9 = select_vue_vue_type_script_setup_true_lang_default.setup;
570
+ var _sfc_setup$10 = select_vue_vue_type_script_setup_true_lang_default.setup;
567
571
  select_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
568
572
  const ssrContext = useSSRContext();
569
573
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/project/environments/select.vue");
570
- return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
574
+ return _sfc_setup$10 ? _sfc_setup$10(props, ctx) : void 0;
571
575
  };
572
576
  var select_default = Object.assign(select_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectEnvironmentsSelect" });
573
577
  //#endregion
@@ -866,7 +870,7 @@ var _sfc_main$2 = {
866
870
  else if (item.kbds?.length) {
867
871
  _push(`<span data-slot="itemTrailingKbds" class="${ssrRenderClass(__props.ui.itemTrailingKbds({ class: [__props.uiOverride?.itemTrailingKbds, item.ui?.itemTrailingKbds] }))}"${_scopeId}><!--[-->`);
868
872
  ssrRenderList(item.kbds, (kbd, kbdIndex) => {
869
- _push(ssrRenderComponent(_sfc_main$8$1, mergeProps({
873
+ _push(ssrRenderComponent(_sfc_main$a, mergeProps({
870
874
  key: kbdIndex,
871
875
  size: item.ui?.itemTrailingKbdsSize || __props.uiOverride?.itemTrailingKbdsSize || __props.ui.itemTrailingKbdsSize()
872
876
  }, { ref_for: true }, typeof kbd === "string" ? { value: kbd } : kbd), null, _parent, _scopeId));
@@ -989,7 +993,7 @@ var _sfc_main$2 = {
989
993
  "data-slot": "itemTrailingKbds",
990
994
  class: __props.ui.itemTrailingKbds({ class: [__props.uiOverride?.itemTrailingKbds, item.ui?.itemTrailingKbds] })
991
995
  }, [(openBlock(true), createBlock(Fragment, null, renderList(item.kbds, (kbd, kbdIndex) => {
992
- return openBlock(), createBlock(_sfc_main$8$1, mergeProps({
996
+ return openBlock(), createBlock(_sfc_main$a, mergeProps({
993
997
  key: kbdIndex,
994
998
  size: item.ui?.itemTrailingKbdsSize || __props.uiOverride?.itemTrailingKbdsSize || __props.ui.itemTrailingKbdsSize()
995
999
  }, { ref_for: true }, typeof kbd === "string" ? { value: kbd } : kbd), null, 16, ["size"]);
@@ -1024,7 +1028,7 @@ var _sfc_main$2 = {
1024
1028
  "as-child": ""
1025
1029
  }, {
1026
1030
  default: withCtx((_, _push, _parent, _scopeId) => {
1027
- if (_push) _push(ssrRenderComponent(_sfc_main$7, mergeProps({
1031
+ if (_push) _push(ssrRenderComponent(_sfc_main$8, mergeProps({
1028
1032
  autofocus: "",
1029
1033
  autocomplete: "off",
1030
1034
  size: __props.size
@@ -1033,7 +1037,7 @@ var _sfc_main$2 = {
1033
1037
  class: __props.ui.input({ class: __props.uiOverride?.input }),
1034
1038
  onChange: () => {}
1035
1039
  }), null, _parent, _scopeId));
1036
- else return [createVNode(_sfc_main$7, mergeProps({
1040
+ else return [createVNode(_sfc_main$8, mergeProps({
1037
1041
  autofocus: "",
1038
1042
  autocomplete: "off",
1039
1043
  size: __props.size
@@ -1257,7 +1261,7 @@ var _sfc_main$2 = {
1257
1261
  onSelect: item.onSelect
1258
1262
  }, {
1259
1263
  default: withCtx((_, _push, _parent, _scopeId) => {
1260
- if (_push) _push(ssrRenderComponent(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1264
+ if (_push) _push(ssrRenderComponent(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1261
1265
  "data-slot": "item",
1262
1266
  class: __props.ui.item({
1263
1267
  class: [
@@ -1287,7 +1291,7 @@ var _sfc_main$2 = {
1287
1291
  }),
1288
1292
  _: 2
1289
1293
  }, _parent, _scopeId));
1290
- else return [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1294
+ else return [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1291
1295
  "data-slot": "item",
1292
1296
  class: __props.ui.item({
1293
1297
  class: [
@@ -1319,7 +1323,7 @@ var _sfc_main$2 = {
1319
1323
  "text-value": unref(get)(item, props.labelKey),
1320
1324
  onSelect: item.onSelect
1321
1325
  }, {
1322
- default: withCtx(() => [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1326
+ default: withCtx(() => [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1323
1327
  "data-slot": "item",
1324
1328
  class: __props.ui.item({
1325
1329
  class: [
@@ -1486,7 +1490,7 @@ var _sfc_main$2 = {
1486
1490
  "text-value": unref(get)(item, props.labelKey),
1487
1491
  onSelect: item.onSelect
1488
1492
  }, {
1489
- default: withCtx(() => [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1493
+ default: withCtx(() => [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1490
1494
  "data-slot": "item",
1491
1495
  class: __props.ui.item({
1492
1496
  class: [
@@ -1540,7 +1544,7 @@ var _sfc_main$2 = {
1540
1544
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1541
1545
  "as-child": ""
1542
1546
  }, {
1543
- default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1547
+ default: withCtx(() => [createVNode(_sfc_main$8, mergeProps({
1544
1548
  autofocus: "",
1545
1549
  autocomplete: "off",
1546
1550
  size: __props.size
@@ -1699,7 +1703,7 @@ var _sfc_main$2 = {
1699
1703
  "text-value": unref(get)(item, props.labelKey),
1700
1704
  onSelect: item.onSelect
1701
1705
  }, {
1702
- default: withCtx(() => [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1706
+ default: withCtx(() => [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1703
1707
  "data-slot": "item",
1704
1708
  class: __props.ui.item({
1705
1709
  class: [
@@ -1756,7 +1760,7 @@ var _sfc_main$2 = {
1756
1760
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1757
1761
  "as-child": ""
1758
1762
  }, {
1759
- default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1763
+ default: withCtx(() => [createVNode(_sfc_main$8, mergeProps({
1760
1764
  autofocus: "",
1761
1765
  autocomplete: "off",
1762
1766
  size: __props.size
@@ -1915,7 +1919,7 @@ var _sfc_main$2 = {
1915
1919
  "text-value": unref(get)(item, props.labelKey),
1916
1920
  onSelect: item.onSelect
1917
1921
  }, {
1918
- default: withCtx(() => [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
1922
+ default: withCtx(() => [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
1919
1923
  "data-slot": "item",
1920
1924
  class: __props.ui.item({
1921
1925
  class: [
@@ -1975,7 +1979,7 @@ var _sfc_main$2 = {
1975
1979
  "onUpdate:modelValue": ($event) => searchTerm.value = $event,
1976
1980
  "as-child": ""
1977
1981
  }, {
1978
- default: withCtx(() => [createVNode(_sfc_main$7, mergeProps({
1982
+ default: withCtx(() => [createVNode(_sfc_main$8, mergeProps({
1979
1983
  autofocus: "",
1980
1984
  autocomplete: "off",
1981
1985
  size: __props.size
@@ -2134,7 +2138,7 @@ var _sfc_main$2 = {
2134
2138
  "text-value": unref(get)(item, props.labelKey),
2135
2139
  onSelect: item.onSelect
2136
2140
  }, {
2137
- default: withCtx(() => [createVNode(_sfc_main$2$2, mergeProps({ ref_for: true }, slotProps, {
2141
+ default: withCtx(() => [createVNode(_sfc_main$2$1, mergeProps({ ref_for: true }, slotProps, {
2138
2142
  "data-slot": "item",
2139
2143
  class: __props.ui.item({
2140
2144
  class: [
@@ -2188,11 +2192,11 @@ var _sfc_main$2 = {
2188
2192
  };
2189
2193
  }
2190
2194
  };
2191
- var _sfc_setup$8 = _sfc_main$2.setup;
2195
+ var _sfc_setup$9 = _sfc_main$2.setup;
2192
2196
  _sfc_main$2.setup = (props, ctx) => {
2193
2197
  const ssrContext = useSSRContext();
2194
2198
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenuContent.vue");
2195
- return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
2199
+ return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
2196
2200
  };
2197
2201
  //#endregion
2198
2202
  //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fui%2Fdropdown-menu.ts
@@ -2632,12 +2636,173 @@ var _sfc_main$1 = {
2632
2636
  };
2633
2637
  }
2634
2638
  };
2635
- var _sfc_setup$7 = _sfc_main$1.setup;
2639
+ var _sfc_setup$8 = _sfc_main$1.setup;
2636
2640
  _sfc_main$1.setup = (props, ctx) => {
2637
2641
  const ssrContext = useSSRContext();
2638
2642
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e9e3fcf18fb997bdd8dc5f7c218a2205/node_modules/@nuxt/ui/dist/runtime/components/DropdownMenu.vue");
2643
+ return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
2644
+ };
2645
+ //#endregion
2646
+ //#region app/components/scenario/card.vue?vue&type=script&setup=true&lang.ts
2647
+ var card_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
2648
+ __name: "card",
2649
+ __ssrInlineRender: true,
2650
+ props: {
2651
+ scenario: {},
2652
+ slug: {}
2653
+ },
2654
+ emits: [
2655
+ "run",
2656
+ "skip",
2657
+ "remove"
2658
+ ],
2659
+ setup(__props, { emit: __emit }) {
2660
+ const emit = __emit;
2661
+ /** O id do cenário é o caminho do spec sem `tests/` e sem a extensão. */
2662
+ const id = computed(() => __props.scenario.spec.replace(/^tests\//, "").replace(/\.spec\.ts$/, ""));
2663
+ const page = computed(() => `/projects/${__props.slug}/scenarios/${id.value}`);
2664
+ const actions = computed(() => [
2665
+ [{
2666
+ label: "Abrir o cenário",
2667
+ icon: "i-ic-round-open-in-new",
2668
+ testid: "cenario-menu-abrir",
2669
+ onSelect: () => navigateTo(page.value)
2670
+ }, {
2671
+ label: "Ver a última execução",
2672
+ icon: "i-ic-round-history",
2673
+ testid: "cenario-menu-execucao",
2674
+ onSelect: () => navigateTo(`${page.value}?tab=execucoes&run=ultima`)
2675
+ }],
2676
+ [
2677
+ ...__props.scenario.skipped ? [] : [{
2678
+ label: "Rodar",
2679
+ icon: "i-ic-round-play-arrow",
2680
+ testid: "cenario-menu-rodar",
2681
+ onSelect: () => emit("run")
2682
+ }],
2683
+ {
2684
+ label: __props.scenario.skipped ? "Voltar a rodar" : "Pausar",
2685
+ icon: __props.scenario.skipped ? "i-ic-round-play-circle" : "i-ic-round-pause-circle",
2686
+ testid: "cenario-menu-pausar",
2687
+ onSelect: () => emit("skip")
2688
+ },
2689
+ {
2690
+ label: "Editar",
2691
+ icon: "i-ic-round-edit",
2692
+ testid: "cenario-menu-editar",
2693
+ onSelect: () => navigateTo(`${page.value}?editar`)
2694
+ }
2695
+ ],
2696
+ [{
2697
+ label: "Excluir",
2698
+ icon: "i-ic-round-delete",
2699
+ color: "error",
2700
+ testid: "cenario-menu-remover",
2701
+ onSelect: () => emit("remove")
2702
+ }]
2703
+ ]);
2704
+ return (_ctx, _push, _parent, _attrs) => {
2705
+ const _component_UContextMenu = _sfc_main$b;
2706
+ const _component_UCard = _sfc_main$c;
2707
+ const _component_UBadge = _sfc_main$5;
2708
+ _push(ssrRenderComponent(_component_UContextMenu, mergeProps({ items: unref(actions) }, _attrs), {
2709
+ "item-label": withCtx(({ item }, _push, _parent, _scopeId) => {
2710
+ if (_push) _push(`<span${ssrRenderAttr("data-testid", item.testid)}${_scopeId}>${ssrInterpolate(item.label)}</span>`);
2711
+ else return [createVNode("span", { "data-testid": item.testid }, toDisplayString(item.label), 9, ["data-testid"])];
2712
+ }),
2713
+ default: withCtx((_, _push, _parent, _scopeId) => {
2714
+ if (_push) _push(ssrRenderComponent(_component_UCard, {
2715
+ "data-testid": "cenario-card",
2716
+ class: "cursor-pointer transition-colors hover:bg-accented/75",
2717
+ onClick: ($event) => ("navigateTo" in _ctx ? _ctx.navigateTo : unref(navigateTo))(unref(page))
2718
+ }, {
2719
+ default: withCtx((_, _push, _parent, _scopeId) => {
2720
+ if (_push) {
2721
+ _push(`<div class="flex flex-col gap-2"${_scopeId}><p class="font-semibold truncate"${_scopeId}>${ssrInterpolate(__props.scenario.title)}</p><p class="text-sm text-muted italic truncate"${_scopeId}>${ssrInterpolate(__props.scenario.spec)}</p><div class="flex flex-wrap gap-1"${_scopeId}>`);
2722
+ if (__props.scenario.skipped) _push(ssrRenderComponent(_component_UBadge, {
2723
+ color: "warning",
2724
+ variant: "soft",
2725
+ size: "md",
2726
+ icon: "i-ic-round-pause-circle",
2727
+ label: "Pausado",
2728
+ "data-testid": "cenario-card-pulado"
2729
+ }, null, _parent, _scopeId));
2730
+ else _push(`<!---->`);
2731
+ _push(`<!--[-->`);
2732
+ ssrRenderList(__props.scenario.tags, (tag) => {
2733
+ _push(ssrRenderComponent(_component_UBadge, {
2734
+ key: tag,
2735
+ color: unref(tagColor)(tag),
2736
+ size: "md",
2737
+ label: tag
2738
+ }, null, _parent, _scopeId));
2739
+ });
2740
+ _push(`<!--]--></div></div>`);
2741
+ } else return [createVNode("div", { class: "flex flex-col gap-2" }, [
2742
+ createVNode("p", { class: "font-semibold truncate" }, toDisplayString(__props.scenario.title), 1),
2743
+ createVNode("p", { class: "text-sm text-muted italic truncate" }, toDisplayString(__props.scenario.spec), 1),
2744
+ createVNode("div", { class: "flex flex-wrap gap-1" }, [__props.scenario.skipped ? (openBlock(), createBlock(_component_UBadge, {
2745
+ key: 0,
2746
+ color: "warning",
2747
+ variant: "soft",
2748
+ size: "md",
2749
+ icon: "i-ic-round-pause-circle",
2750
+ label: "Pausado",
2751
+ "data-testid": "cenario-card-pulado"
2752
+ })) : createCommentVNode("", true), (openBlock(true), createBlock(Fragment, null, renderList(__props.scenario.tags, (tag) => {
2753
+ return openBlock(), createBlock(_component_UBadge, {
2754
+ key: tag,
2755
+ color: unref(tagColor)(tag),
2756
+ size: "md",
2757
+ label: tag
2758
+ }, null, 8, ["color", "label"]);
2759
+ }), 128))])
2760
+ ])];
2761
+ }),
2762
+ _: 1
2763
+ }, _parent, _scopeId));
2764
+ else return [createVNode(_component_UCard, {
2765
+ "data-testid": "cenario-card",
2766
+ class: "cursor-pointer transition-colors hover:bg-accented/75",
2767
+ onClick: ($event) => ("navigateTo" in _ctx ? _ctx.navigateTo : unref(navigateTo))(unref(page))
2768
+ }, {
2769
+ default: withCtx(() => [createVNode("div", { class: "flex flex-col gap-2" }, [
2770
+ createVNode("p", { class: "font-semibold truncate" }, toDisplayString(__props.scenario.title), 1),
2771
+ createVNode("p", { class: "text-sm text-muted italic truncate" }, toDisplayString(__props.scenario.spec), 1),
2772
+ createVNode("div", { class: "flex flex-wrap gap-1" }, [__props.scenario.skipped ? (openBlock(), createBlock(_component_UBadge, {
2773
+ key: 0,
2774
+ color: "warning",
2775
+ variant: "soft",
2776
+ size: "md",
2777
+ icon: "i-ic-round-pause-circle",
2778
+ label: "Pausado",
2779
+ "data-testid": "cenario-card-pulado"
2780
+ })) : createCommentVNode("", true), (openBlock(true), createBlock(Fragment, null, renderList(__props.scenario.tags, (tag) => {
2781
+ return openBlock(), createBlock(_component_UBadge, {
2782
+ key: tag,
2783
+ color: unref(tagColor)(tag),
2784
+ size: "md",
2785
+ label: tag
2786
+ }, null, 8, ["color", "label"]);
2787
+ }), 128))])
2788
+ ])]),
2789
+ _: 1
2790
+ }, 8, ["onClick"])];
2791
+ }),
2792
+ _: 1
2793
+ }, _parent));
2794
+ };
2795
+ }
2796
+ });
2797
+ //#endregion
2798
+ //#region app/components/scenario/card.vue
2799
+ var _sfc_setup$7 = card_vue_vue_type_script_setup_true_lang_default.setup;
2800
+ card_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
2801
+ const ssrContext = useSSRContext();
2802
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/scenario/card.vue");
2639
2803
  return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
2640
2804
  };
2805
+ var card_default = Object.assign(card_vue_vue_type_script_setup_true_lang_default, { __name: "ScenarioCard" });
2641
2806
  //#endregion
2642
2807
  //#region app/components/scenario/empty.vue?vue&type=script&setup=true&lang.ts
2643
2808
  var empty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -2651,7 +2816,7 @@ var empty_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
2651
2816
  setup(__props, { emit: __emit }) {
2652
2817
  const emit = __emit;
2653
2818
  return (_ctx, _push, _parent, _attrs) => {
2654
- const _component_UCard = _sfc_main$8;
2819
+ const _component_UCard = _sfc_main$c;
2655
2820
  const _component_UIcon = _sfc_main$5$2;
2656
2821
  _push(`<div${ssrRenderAttrs(mergeProps({
2657
2822
  "data-testid": "cenario-vazio",
@@ -2729,8 +2894,8 @@ var vars_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCompo
2729
2894
  return variable.secret && !revealed.value.includes(index) ? "password" : "text";
2730
2895
  }
2731
2896
  return (_ctx, _push, _parent, _attrs) => {
2732
- const _component_UInput = _sfc_main$7;
2733
- const _component_UButton = _sfc_main$6;
2897
+ const _component_UInput = _sfc_main$8;
2898
+ const _component_UButton = _sfc_main$7;
2734
2899
  const _component_UTooltip = _sfc_main$7$1;
2735
2900
  _push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-col gap-2" }, _attrs))}><datalist${ssrRenderAttr("id", unref(keyListId))}><!--[-->`);
2736
2901
  ssrRenderList(__props.knownKeys, (key) => {
@@ -2988,8 +3153,8 @@ var modal_vue_vue_type_script_setup_true_lang_default$2 = /*@__PURE__*/ defineCo
2988
3153
  }
2989
3154
  return (_ctx, _push, _parent, _attrs) => {
2990
3155
  const _component_BaseModal = modal_default$4;
2991
- const _component_UButton = _sfc_main$6;
2992
- const _component_UInput = _sfc_main$7;
3156
+ const _component_UButton = _sfc_main$7;
3157
+ const _component_UInput = _sfc_main$8;
2993
3158
  const _component_UFormField = _sfc_main$1$2;
2994
3159
  const _component_ProjectEnvironmentsVars = vars_default;
2995
3160
  const _component_BaseEmpty = empty_default$1;
@@ -3302,10 +3467,10 @@ var modal_vue_vue_type_script_setup_true_lang_default$1 = /*@__PURE__*/ defineCo
3302
3467
  }
3303
3468
  return (_ctx, _push, _parent, _attrs) => {
3304
3469
  const _component_BaseModal = modal_default$4;
3305
- const _component_UAlert = _sfc_main$5;
3470
+ const _component_UAlert = _sfc_main$6;
3306
3471
  const _component_UFormField = _sfc_main$1$2;
3307
- const _component_UInput = _sfc_main$7;
3308
- const _component_UButton = _sfc_main$6;
3472
+ const _component_UInput = _sfc_main$8;
3473
+ const _component_UButton = _sfc_main$7;
3309
3474
  _push(ssrRenderComponent(_component_BaseModal, mergeProps({
3310
3475
  open: open.value,
3311
3476
  "onUpdate:open": ($event) => open.value = $event,
@@ -3581,11 +3746,11 @@ var modal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
3581
3746
  }
3582
3747
  return (_ctx, _push, _parent, _attrs) => {
3583
3748
  const _component_BaseModal = modal_default$4;
3584
- const _component_UBadge = _sfc_main$2$1;
3749
+ const _component_UBadge = _sfc_main$5;
3585
3750
  const _component_BaseLoadingPhrases = phrases_default;
3586
- const _component_UAlert = _sfc_main$5;
3751
+ const _component_UAlert = _sfc_main$6;
3587
3752
  const _component_UCollapsible = _sfc_main;
3588
- const _component_UButton = _sfc_main$6;
3753
+ const _component_UButton = _sfc_main$7;
3589
3754
  const _component_ScenarioTestRunFailure = failure_default;
3590
3755
  const _component_ScenarioTestRunSteps = steps_default;
3591
3756
  _push(ssrRenderComponent(_component_BaseModal, mergeProps({
@@ -3856,6 +4021,7 @@ modal_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
3856
4021
  var modal_default = Object.assign(modal_vue_vue_type_script_setup_true_lang_default, { __name: "ProjectRunFilteredModal" });
3857
4022
  //#endregion
3858
4023
  //#region app/pages/projects/[slug].vue?vue&type=script&setup=true&lang.ts
4024
+ var DEFAULT_PAGE_SIZE = 9;
3859
4025
  var AUTH_SPEC = "tests/auth.setup.ts";
3860
4026
  var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
3861
4027
  __name: "[slug]",
@@ -3882,14 +4048,86 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
3882
4048
  if (!term) return all;
3883
4049
  return all.filter((scenario) => scenario.title.toLowerCase().includes(term) || scenario.tags.some((tag) => tag.toLowerCase().includes(term)));
3884
4050
  });
3885
- /** O cenário pulado fica na listagem, mas fora da execução: o Playwright não roda ele. */
4051
+ /** O cenário pausado fica na listagem, mas fora da execução: o Playwright não roda ele. */
3886
4052
  const runnable = computed(() => scenarios.value.filter((scenario) => !scenario.skipped));
4053
+ /** O que o SSR pede antes de medir a tela: três colunas por três linhas cabem na maioria. */
4054
+ const pageSize = ref(DEFAULT_PAGE_SIZE);
4055
+ const page = ref(1);
4056
+ const grid = ref();
4057
+ const paginated = computed(() => scenarios.value.slice((page.value - 1) * pageSize.value, page.value * pageSize.value));
4058
+ watch(scenarios, () => {
4059
+ page.value = 1;
4060
+ });
4061
+ /** Quantos cards cabem na altura que sobra da tela, medindo o card e a grade do DOM. */
4062
+ function fitPageSize() {
4063
+ const gridEl = grid.value;
4064
+ const card = gridEl?.firstElementChild;
4065
+ if (!gridEl || !card) return;
4066
+ const style = getComputedStyle(gridEl);
4067
+ const gap = Number.parseFloat(style.rowGap) || 0;
4068
+ const columns = style.gridTemplateColumns.split(" ").length;
4069
+ const cardHeight = card.getBoundingClientRect().height;
4070
+ if (cardHeight <= 0) return;
4071
+ const free = (void 0).innerHeight - gridEl.getBoundingClientRect().top - 96;
4072
+ const fits = Math.max(1, Math.floor((free + gap) / (cardHeight + gap))) * columns;
4073
+ if (fits === pageSize.value) return;
4074
+ page.value = 1;
4075
+ pageSize.value = fits;
4076
+ }
4077
+ watch(paginated, () => nextTick(fitPageSize));
3887
4078
  const filteredRun = useRunStream(() => slug.value);
3888
4079
  const filteredRunOpen = ref(false);
3889
4080
  /** O que roda é o que está na tela: os títulos filtrados viram o `--grep` do Playwright. */
3890
4081
  function runFiltered() {
3891
4082
  filteredRunOpen.value = true;
3892
- filteredRun.start({ grep: runnable.value.map((scenario) => scenario.title.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|") });
4083
+ filteredRun.start({
4084
+ grep: runnable.value.map((scenario) => scenario.title.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|"),
4085
+ filter: search.value.trim() || void 0
4086
+ });
4087
+ }
4088
+ /** Rodar um cenário só, pelo menu do card: é a mesma tela de resultado da execução filtrada. */
4089
+ function runOne(scenario) {
4090
+ filteredRunOpen.value = true;
4091
+ filteredRun.start({ spec: scenario.spec });
4092
+ }
4093
+ const notify = useNotify();
4094
+ async function toggleSkip(scenario) {
4095
+ const id = scenarioIdOf(scenario);
4096
+ try {
4097
+ await $fetch$1(`/api/projects/${slug.value}/scenario-skip`, {
4098
+ method: "PATCH",
4099
+ body: {
4100
+ scenarioId: id,
4101
+ skipped: !scenario.skipped
4102
+ }
4103
+ });
4104
+ notify.success(scenario.skipped ? "Cenário voltou a rodar." : "Cenário pausado.");
4105
+ await refresh();
4106
+ } catch (error) {
4107
+ notify.failure(error, "Não foi possível mudar o cenário.");
4108
+ }
4109
+ }
4110
+ const removingScenario = ref(null);
4111
+ const removingScenarioBusy = ref(false);
4112
+ function askRemoval(scenario) {
4113
+ removingScenario.value = scenario;
4114
+ }
4115
+ async function removeScenario() {
4116
+ const scenario = removingScenario.value;
4117
+ removingScenarioBusy.value = true;
4118
+ try {
4119
+ await $fetch$1(`/api/projects/${slug.value}/scenarios/${scenarioIdOf(scenario)}`, { method: "DELETE" });
4120
+ removingScenario.value = null;
4121
+ notify.success("Cenário excluído.");
4122
+ await refresh();
4123
+ } catch (error) {
4124
+ notify.failure(error, "Não foi possível excluir o cenário.");
4125
+ } finally {
4126
+ removingScenarioBusy.value = false;
4127
+ }
4128
+ }
4129
+ function scenarioIdOf(scenario) {
4130
+ return scenario.spec.replace(/^tests\//, "").replace(/\.spec\.ts$/, "");
3893
4131
  }
3894
4132
  const { conflict: gitConflict, unavailable: gitUnavailable, sync: syncGit } = useGitSync(slug.value);
3895
4133
  async function syncLatest() {
@@ -4024,17 +4262,18 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4024
4262
  return (_ctx, _push, _parent, _attrs) => {
4025
4263
  const _component_UContainer = _sfc_main$4;
4026
4264
  const _component_BaseButtonIcon = icon_default;
4027
- const _component_UBadge = _sfc_main$2$1;
4265
+ const _component_UBadge = _sfc_main$5;
4028
4266
  const _component_ProjectRenameInline = inline_default;
4029
4267
  const _component_ProjectEnvironmentsSelect = select_default;
4030
4268
  const _component_UChip = _sfc_main$4$1;
4031
- const _component_UAlert = _sfc_main$5;
4032
- const _component_UButton = _sfc_main$6;
4033
- const _component_UInput = _sfc_main$7;
4269
+ const _component_UAlert = _sfc_main$6;
4270
+ const _component_UButton = _sfc_main$7;
4271
+ const _component_UInput = _sfc_main$8;
4034
4272
  const _component_UDropdownMenu = _sfc_main$1;
4035
4273
  const _component_WebdriverSetup = setup_default;
4036
4274
  const _component_ScenarioReviewModal = modal_default$1$1;
4037
- const _component_UCard = _sfc_main$8;
4275
+ const _component_ScenarioCard = card_default;
4276
+ const _component_UPagination = _sfc_main$9;
4038
4277
  const _component_ScenarioEmpty = empty_default;
4039
4278
  const _component_ProjectEnvironmentsModal = modal_default$2;
4040
4279
  const _component_ProjectSettingsModal = modal_default$1;
@@ -4086,12 +4325,10 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4086
4325
  }, null, _parent, _scopeId));
4087
4326
  if (unref(project).has_report) _push(ssrRenderComponent(_component_BaseButtonIcon, {
4088
4327
  icon: "i-ic-round-assessment",
4089
- label: "Relatório da última execução",
4328
+ label: "Relatório das execuções",
4090
4329
  color: "neutral",
4091
4330
  variant: "soft",
4092
- to: unref(reportUrlFor)(unref(slug)),
4093
- target: "_blank",
4094
- external: "",
4331
+ to: `/projects/${unref(slug)}/report`,
4095
4332
  "data-testid": "projeto-relatorio"
4096
4333
  }, null, _parent, _scopeId));
4097
4334
  else _push(`<!---->`);
@@ -4317,60 +4554,29 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4317
4554
  }, null, _parent, _scopeId));
4318
4555
  if (unref(scenarios).length) {
4319
4556
  _push(`<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"${_scopeId}><!--[-->`);
4320
- ssrRenderList(unref(scenarios), (scenario) => {
4321
- _push(ssrRenderComponent(_component_UCard, {
4557
+ ssrRenderList(unref(paginated), (scenario) => {
4558
+ _push(ssrRenderComponent(_component_ScenarioCard, {
4322
4559
  key: scenario.spec,
4323
- "data-testid": "cenario-card",
4324
- class: "cursor-pointer",
4325
- onClick: ($event) => unref(navigateTo)(`/projects/${unref(slug)}/scenarios/${scenario.spec.replace(/^tests\//, "").replace(/\.spec\.ts$/, "")}`)
4326
- }, {
4327
- default: withCtx((_, _push, _parent, _scopeId) => {
4328
- if (_push) {
4329
- _push(`<div class="flex flex-col gap-2"${_scopeId}><p class="font-semibold truncate"${_scopeId}>${ssrInterpolate(scenario.title)}</p><p class="text-sm text-muted italic truncate"${_scopeId}>${ssrInterpolate(scenario.spec)}</p><div class="flex flex-wrap gap-1"${_scopeId}>`);
4330
- if (scenario.skipped) _push(ssrRenderComponent(_component_UBadge, {
4331
- color: "warning",
4332
- variant: "soft",
4333
- size: "md",
4334
- icon: "i-ic-round-pause-circle",
4335
- label: "Pulado",
4336
- "data-testid": "cenario-card-pulado"
4337
- }, null, _parent, _scopeId));
4338
- else _push(`<!---->`);
4339
- _push(`<!--[-->`);
4340
- ssrRenderList(scenario.tags, (tag) => {
4341
- _push(ssrRenderComponent(_component_UBadge, {
4342
- key: tag,
4343
- color: unref(tagColor)(tag),
4344
- size: "md",
4345
- label: tag
4346
- }, null, _parent, _scopeId));
4347
- });
4348
- _push(`<!--]--></div></div>`);
4349
- } else return [createVNode("div", { class: "flex flex-col gap-2" }, [
4350
- createVNode("p", { class: "font-semibold truncate" }, toDisplayString(scenario.title), 1),
4351
- createVNode("p", { class: "text-sm text-muted italic truncate" }, toDisplayString(scenario.spec), 1),
4352
- createVNode("div", { class: "flex flex-wrap gap-1" }, [scenario.skipped ? (openBlock(), createBlock(_component_UBadge, {
4353
- key: 0,
4354
- color: "warning",
4355
- variant: "soft",
4356
- size: "md",
4357
- icon: "i-ic-round-pause-circle",
4358
- label: "Pulado",
4359
- "data-testid": "cenario-card-pulado"
4360
- })) : createCommentVNode("", true), (openBlock(true), createBlock(Fragment, null, renderList(scenario.tags, (tag) => {
4361
- return openBlock(), createBlock(_component_UBadge, {
4362
- key: tag,
4363
- color: unref(tagColor)(tag),
4364
- size: "md",
4365
- label: tag
4366
- }, null, 8, ["color", "label"]);
4367
- }), 128))])
4368
- ])];
4369
- }),
4370
- _: 2
4371
- }, _parent, _scopeId));
4560
+ scenario,
4561
+ slug: unref(slug),
4562
+ onRun: ($event) => runOne(scenario),
4563
+ onSkip: ($event) => toggleSkip(scenario),
4564
+ onRemove: ($event) => askRemoval(scenario)
4565
+ }, null, _parent, _scopeId));
4372
4566
  });
4373
4567
  _push(`<!--]--></div>`);
4568
+ } else _push(`<!---->`);
4569
+ if (unref(scenarios).length > unref(pageSize)) {
4570
+ _push(`<div class="mt-6 flex justify-center"${_scopeId}>`);
4571
+ _push(ssrRenderComponent(_component_UPagination, {
4572
+ page: unref(page),
4573
+ "onUpdate:page": ($event) => isRef(page) ? page.value = $event : null,
4574
+ variant: "soft",
4575
+ total: unref(scenarios).length,
4576
+ "items-per-page": unref(pageSize),
4577
+ "data-testid": "cenario-paginacao"
4578
+ }, null, _parent, _scopeId));
4579
+ _push(`</div>`);
4374
4580
  } else _push(ssrRenderComponent(_component_ScenarioEmpty, {
4375
4581
  disabled: !unref(webdriver).connected,
4376
4582
  onRecord: recordDefault
@@ -4416,6 +4622,17 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4416
4622
  output: unref(authRun).output.value,
4417
4623
  onFix: ($event) => unref(navigateTo)(unref(authPage))
4418
4624
  }, null, _parent, _scopeId));
4625
+ _push(ssrRenderComponent(_component_BaseConfirm, {
4626
+ open: unref(removingScenario) !== null,
4627
+ title: "Excluir cenário",
4628
+ description: `Isso apaga os arquivos de teste, feature e eventos de "${unref(removingScenario)?.title}".`,
4629
+ "confirm-label": "Excluir",
4630
+ "confirm-color": "error",
4631
+ "confirm-testid": "cenario-excluir-confirmar",
4632
+ loading: unref(removingScenarioBusy),
4633
+ "onUpdate:open": ($event) => removingScenario.value = $event ? unref(removingScenario) : null,
4634
+ onConfirm: removeScenario
4635
+ }, null, _parent, _scopeId));
4419
4636
  _push(ssrRenderComponent(_component_BaseConfirm, {
4420
4637
  open: unref(removeOpen),
4421
4638
  "onUpdate:open": ($event) => isRef(removeOpen) ? removeOpen.value = $event : null,
@@ -4478,12 +4695,10 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4478
4695
  unref(project).has_report ? (openBlock(), createBlock(_component_BaseButtonIcon, {
4479
4696
  key: 0,
4480
4697
  icon: "i-ic-round-assessment",
4481
- label: "Relatório da última execução",
4698
+ label: "Relatório das execuções",
4482
4699
  color: "neutral",
4483
4700
  variant: "soft",
4484
- to: unref(reportUrlFor)(unref(slug)),
4485
- target: "_blank",
4486
- external: "",
4701
+ to: `/projects/${unref(slug)}/report`,
4487
4702
  "data-testid": "projeto-relatorio"
4488
4703
  }, null, 8, ["to"])) : createCommentVNode("", true),
4489
4704
  createVNode(_component_UChip, {
@@ -4658,38 +4873,42 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4658
4873
  ]),
4659
4874
  unref(scenarios).length ? (openBlock(), createBlock("div", {
4660
4875
  key: 4,
4876
+ ref_key: "grid",
4877
+ ref: grid,
4661
4878
  class: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"
4662
- }, [(openBlock(true), createBlock(Fragment, null, renderList(unref(scenarios), (scenario) => {
4663
- return openBlock(), createBlock(_component_UCard, {
4879
+ }, [(openBlock(true), createBlock(Fragment, null, renderList(unref(paginated), (scenario) => {
4880
+ return openBlock(), createBlock(_component_ScenarioCard, {
4664
4881
  key: scenario.spec,
4665
- "data-testid": "cenario-card",
4666
- class: "cursor-pointer",
4667
- onClick: ($event) => unref(navigateTo)(`/projects/${unref(slug)}/scenarios/${scenario.spec.replace(/^tests\//, "").replace(/\.spec\.ts$/, "")}`)
4668
- }, {
4669
- default: withCtx(() => [createVNode("div", { class: "flex flex-col gap-2" }, [
4670
- createVNode("p", { class: "font-semibold truncate" }, toDisplayString(scenario.title), 1),
4671
- createVNode("p", { class: "text-sm text-muted italic truncate" }, toDisplayString(scenario.spec), 1),
4672
- createVNode("div", { class: "flex flex-wrap gap-1" }, [scenario.skipped ? (openBlock(), createBlock(_component_UBadge, {
4673
- key: 0,
4674
- color: "warning",
4675
- variant: "soft",
4676
- size: "md",
4677
- icon: "i-ic-round-pause-circle",
4678
- label: "Pulado",
4679
- "data-testid": "cenario-card-pulado"
4680
- })) : createCommentVNode("", true), (openBlock(true), createBlock(Fragment, null, renderList(scenario.tags, (tag) => {
4681
- return openBlock(), createBlock(_component_UBadge, {
4682
- key: tag,
4683
- color: unref(tagColor)(tag),
4684
- size: "md",
4685
- label: tag
4686
- }, null, 8, ["color", "label"]);
4687
- }), 128))])
4688
- ])]),
4689
- _: 2
4690
- }, 1032, ["onClick"]);
4691
- }), 128))])) : (openBlock(), createBlock(_component_ScenarioEmpty, {
4882
+ scenario,
4883
+ slug: unref(slug),
4884
+ onRun: ($event) => runOne(scenario),
4885
+ onSkip: ($event) => toggleSkip(scenario),
4886
+ onRemove: ($event) => askRemoval(scenario)
4887
+ }, null, 8, [
4888
+ "scenario",
4889
+ "slug",
4890
+ "onRun",
4891
+ "onSkip",
4892
+ "onRemove"
4893
+ ]);
4894
+ }), 128))], 512)) : createCommentVNode("", true),
4895
+ unref(scenarios).length > unref(pageSize) ? (openBlock(), createBlock("div", {
4692
4896
  key: 5,
4897
+ class: "mt-6 flex justify-center"
4898
+ }, [createVNode(_component_UPagination, {
4899
+ page: unref(page),
4900
+ "onUpdate:page": ($event) => isRef(page) ? page.value = $event : null,
4901
+ variant: "soft",
4902
+ total: unref(scenarios).length,
4903
+ "items-per-page": unref(pageSize),
4904
+ "data-testid": "cenario-paginacao"
4905
+ }, null, 8, [
4906
+ "page",
4907
+ "onUpdate:page",
4908
+ "total",
4909
+ "items-per-page"
4910
+ ])])) : (openBlock(), createBlock(_component_ScenarioEmpty, {
4911
+ key: 6,
4693
4912
  disabled: !unref(webdriver).connected,
4694
4913
  onRecord: recordDefault
4695
4914
  }, null, 8, ["disabled"])),
@@ -4767,6 +4986,22 @@ var _slug__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
4767
4986
  "output",
4768
4987
  "onFix"
4769
4988
  ]),
4989
+ createVNode(_component_BaseConfirm, {
4990
+ open: unref(removingScenario) !== null,
4991
+ title: "Excluir cenário",
4992
+ description: `Isso apaga os arquivos de teste, feature e eventos de "${unref(removingScenario)?.title}".`,
4993
+ "confirm-label": "Excluir",
4994
+ "confirm-color": "error",
4995
+ "confirm-testid": "cenario-excluir-confirmar",
4996
+ loading: unref(removingScenarioBusy),
4997
+ "onUpdate:open": ($event) => removingScenario.value = $event ? unref(removingScenario) : null,
4998
+ onConfirm: removeScenario
4999
+ }, null, 8, [
5000
+ "open",
5001
+ "description",
5002
+ "loading",
5003
+ "onUpdate:open"
5004
+ ]),
4770
5005
  createVNode(_component_BaseConfirm, {
4771
5006
  open: unref(removeOpen),
4772
5007
  "onUpdate:open": ($event) => isRef(removeOpen) ? removeOpen.value = $event : null,
@@ -4801,4 +5036,4 @@ _slug__vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
4801
5036
  var _slug__default = _slug__vue_vue_type_script_setup_true_lang_default;
4802
5037
 
4803
5038
  export { _slug__default as default };
4804
- //# sourceMappingURL=_slug_-DjtFCLa7.mjs.map
5039
+ //# sourceMappingURL=_slug_-CCufladN.mjs.map