@ai-qa/workflow 2.0.2 → 2.0.4
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/.cursorrules +5 -0
- package/.github/copilot-instructions.md +3 -0
- package/PROJECT_GUIDE.md +102 -0
- package/README.md +15 -14
- package/agents/router.md +29 -0
- package/docs/application-context.md +20 -0
- package/install.js +1 -0
- package/package.json +24 -2
- package/qa-dashboard/.env +3 -0
- package/qa-dashboard/app.js +52 -0
- package/qa-dashboard/data/projects.json +9 -0
- package/qa-dashboard/node_modules/.bin/ejs +16 -0
- package/qa-dashboard/node_modules/.bin/ejs.cmd +17 -0
- package/qa-dashboard/node_modules/.bin/ejs.ps1 +28 -0
- package/qa-dashboard/node_modules/.bin/jake +16 -0
- package/qa-dashboard/node_modules/.bin/jake.cmd +17 -0
- package/qa-dashboard/node_modules/.bin/jake.ps1 +28 -0
- package/qa-dashboard/node_modules/.bin/mime +16 -0
- package/qa-dashboard/node_modules/.bin/mime.cmd +17 -0
- package/qa-dashboard/node_modules/.bin/mime.ps1 +28 -0
- package/qa-dashboard/node_modules/.package-lock.json +990 -0
- package/qa-dashboard/node_modules/@kurkle/color/LICENSE.md +9 -0
- package/qa-dashboard/node_modules/@kurkle/color/README.md +79 -0
- package/qa-dashboard/node_modules/@kurkle/color/dist/color.cjs +624 -0
- package/qa-dashboard/node_modules/@kurkle/color/dist/color.d.ts +235 -0
- package/qa-dashboard/node_modules/@kurkle/color/dist/color.esm.js +589 -0
- package/qa-dashboard/node_modules/@kurkle/color/dist/color.min.js +8 -0
- package/qa-dashboard/node_modules/@kurkle/color/dist/color.min.js.map +1 -0
- package/qa-dashboard/node_modules/@kurkle/color/package.json +77 -0
- package/qa-dashboard/node_modules/accepts/HISTORY.md +243 -0
- package/qa-dashboard/node_modules/accepts/LICENSE +23 -0
- package/qa-dashboard/node_modules/accepts/README.md +140 -0
- package/qa-dashboard/node_modules/accepts/index.js +238 -0
- package/qa-dashboard/node_modules/accepts/package.json +47 -0
- package/qa-dashboard/node_modules/array-flatten/LICENSE +21 -0
- package/qa-dashboard/node_modules/array-flatten/README.md +43 -0
- package/qa-dashboard/node_modules/array-flatten/array-flatten.js +64 -0
- package/qa-dashboard/node_modules/array-flatten/package.json +39 -0
- package/qa-dashboard/node_modules/async/CHANGELOG.md +351 -0
- package/qa-dashboard/node_modules/async/LICENSE +19 -0
- package/qa-dashboard/node_modules/async/README.md +59 -0
- package/qa-dashboard/node_modules/async/all.js +119 -0
- package/qa-dashboard/node_modules/async/allLimit.js +46 -0
- package/qa-dashboard/node_modules/async/allSeries.js +45 -0
- package/qa-dashboard/node_modules/async/any.js +122 -0
- package/qa-dashboard/node_modules/async/anyLimit.js +47 -0
- package/qa-dashboard/node_modules/async/anySeries.js +46 -0
- package/qa-dashboard/node_modules/async/apply.js +11 -0
- package/qa-dashboard/node_modules/async/applyEach.js +57 -0
- package/qa-dashboard/node_modules/async/applyEachSeries.js +37 -0
- package/qa-dashboard/node_modules/async/asyncify.js +118 -0
- package/qa-dashboard/node_modules/async/auto.js +333 -0
- package/qa-dashboard/node_modules/async/autoInject.js +182 -0
- package/qa-dashboard/node_modules/async/bower.json +17 -0
- package/qa-dashboard/node_modules/async/cargo.js +63 -0
- package/qa-dashboard/node_modules/async/cargoQueue.js +71 -0
- package/qa-dashboard/node_modules/async/compose.js +55 -0
- package/qa-dashboard/node_modules/async/concat.js +115 -0
- package/qa-dashboard/node_modules/async/concatLimit.js +60 -0
- package/qa-dashboard/node_modules/async/concatSeries.js +41 -0
- package/qa-dashboard/node_modules/async/constant.js +14 -0
- package/qa-dashboard/node_modules/async/detect.js +96 -0
- package/qa-dashboard/node_modules/async/detectLimit.js +48 -0
- package/qa-dashboard/node_modules/async/detectSeries.js +47 -0
- package/qa-dashboard/node_modules/async/dir.js +43 -0
- package/qa-dashboard/node_modules/async/dist/async.js +6061 -0
- package/qa-dashboard/node_modules/async/dist/async.min.js +1 -0
- package/qa-dashboard/node_modules/async/dist/async.mjs +5948 -0
- package/qa-dashboard/node_modules/async/doDuring.js +68 -0
- package/qa-dashboard/node_modules/async/doUntil.js +46 -0
- package/qa-dashboard/node_modules/async/doWhilst.js +68 -0
- package/qa-dashboard/node_modules/async/during.js +78 -0
- package/qa-dashboard/node_modules/async/each.js +129 -0
- package/qa-dashboard/node_modules/async/eachLimit.js +50 -0
- package/qa-dashboard/node_modules/async/eachOf.js +185 -0
- package/qa-dashboard/node_modules/async/eachOfLimit.js +47 -0
- package/qa-dashboard/node_modules/async/eachOfSeries.js +39 -0
- package/qa-dashboard/node_modules/async/eachSeries.js +44 -0
- package/qa-dashboard/node_modules/async/ensureAsync.js +67 -0
- package/qa-dashboard/node_modules/async/every.js +119 -0
- package/qa-dashboard/node_modules/async/everyLimit.js +46 -0
- package/qa-dashboard/node_modules/async/everySeries.js +45 -0
- package/qa-dashboard/node_modules/async/filter.js +93 -0
- package/qa-dashboard/node_modules/async/filterLimit.js +45 -0
- package/qa-dashboard/node_modules/async/filterSeries.js +43 -0
- package/qa-dashboard/node_modules/async/find.js +96 -0
- package/qa-dashboard/node_modules/async/findLimit.js +48 -0
- package/qa-dashboard/node_modules/async/findSeries.js +47 -0
- package/qa-dashboard/node_modules/async/flatMap.js +115 -0
- package/qa-dashboard/node_modules/async/flatMapLimit.js +60 -0
- package/qa-dashboard/node_modules/async/flatMapSeries.js +41 -0
- package/qa-dashboard/node_modules/async/foldl.js +153 -0
- package/qa-dashboard/node_modules/async/foldr.js +41 -0
- package/qa-dashboard/node_modules/async/forEach.js +129 -0
- package/qa-dashboard/node_modules/async/forEachLimit.js +50 -0
- package/qa-dashboard/node_modules/async/forEachOf.js +185 -0
- package/qa-dashboard/node_modules/async/forEachOfLimit.js +47 -0
- package/qa-dashboard/node_modules/async/forEachOfSeries.js +39 -0
- package/qa-dashboard/node_modules/async/forEachSeries.js +44 -0
- package/qa-dashboard/node_modules/async/forever.js +68 -0
- package/qa-dashboard/node_modules/async/groupBy.js +108 -0
- package/qa-dashboard/node_modules/async/groupByLimit.js +71 -0
- package/qa-dashboard/node_modules/async/groupBySeries.js +36 -0
- package/qa-dashboard/node_modules/async/index.js +588 -0
- package/qa-dashboard/node_modules/async/inject.js +153 -0
- package/qa-dashboard/node_modules/async/internal/DoublyLinkedList.js +92 -0
- package/qa-dashboard/node_modules/async/internal/Heap.js +120 -0
- package/qa-dashboard/node_modules/async/internal/applyEach.js +29 -0
- package/qa-dashboard/node_modules/async/internal/asyncEachOfLimit.js +75 -0
- package/qa-dashboard/node_modules/async/internal/awaitify.js +28 -0
- package/qa-dashboard/node_modules/async/internal/breakLoop.js +10 -0
- package/qa-dashboard/node_modules/async/internal/consoleFunc.js +31 -0
- package/qa-dashboard/node_modules/async/internal/createTester.js +40 -0
- package/qa-dashboard/node_modules/async/internal/eachOfLimit.js +90 -0
- package/qa-dashboard/node_modules/async/internal/filter.js +55 -0
- package/qa-dashboard/node_modules/async/internal/getIterator.js +11 -0
- package/qa-dashboard/node_modules/async/internal/initialParams.js +14 -0
- package/qa-dashboard/node_modules/async/internal/isArrayLike.js +10 -0
- package/qa-dashboard/node_modules/async/internal/iterator.js +57 -0
- package/qa-dashboard/node_modules/async/internal/map.js +30 -0
- package/qa-dashboard/node_modules/async/internal/once.js +17 -0
- package/qa-dashboard/node_modules/async/internal/onlyOnce.js +15 -0
- package/qa-dashboard/node_modules/async/internal/parallel.js +34 -0
- package/qa-dashboard/node_modules/async/internal/promiseCallback.js +23 -0
- package/qa-dashboard/node_modules/async/internal/queue.js +294 -0
- package/qa-dashboard/node_modules/async/internal/range.js +14 -0
- package/qa-dashboard/node_modules/async/internal/reject.js +26 -0
- package/qa-dashboard/node_modules/async/internal/setImmediate.js +34 -0
- package/qa-dashboard/node_modules/async/internal/withoutIndex.js +10 -0
- package/qa-dashboard/node_modules/async/internal/wrapAsync.js +34 -0
- package/qa-dashboard/node_modules/async/log.js +41 -0
- package/qa-dashboard/node_modules/async/map.js +142 -0
- package/qa-dashboard/node_modules/async/mapLimit.js +45 -0
- package/qa-dashboard/node_modules/async/mapSeries.js +44 -0
- package/qa-dashboard/node_modules/async/mapValues.js +152 -0
- package/qa-dashboard/node_modules/async/mapValuesLimit.js +61 -0
- package/qa-dashboard/node_modules/async/mapValuesSeries.js +37 -0
- package/qa-dashboard/node_modules/async/memoize.js +91 -0
- package/qa-dashboard/node_modules/async/nextTick.js +52 -0
- package/qa-dashboard/node_modules/async/package.json +75 -0
- package/qa-dashboard/node_modules/async/parallel.js +180 -0
- package/qa-dashboard/node_modules/async/parallelLimit.js +41 -0
- package/qa-dashboard/node_modules/async/priorityQueue.js +60 -0
- package/qa-dashboard/node_modules/async/queue.js +24 -0
- package/qa-dashboard/node_modules/async/race.js +67 -0
- package/qa-dashboard/node_modules/async/reduce.js +153 -0
- package/qa-dashboard/node_modules/async/reduceRight.js +41 -0
- package/qa-dashboard/node_modules/async/reflect.js +78 -0
- package/qa-dashboard/node_modules/async/reflectAll.js +93 -0
- package/qa-dashboard/node_modules/async/reject.js +87 -0
- package/qa-dashboard/node_modules/async/rejectLimit.js +45 -0
- package/qa-dashboard/node_modules/async/rejectSeries.js +43 -0
- package/qa-dashboard/node_modules/async/retry.js +159 -0
- package/qa-dashboard/node_modules/async/retryable.js +77 -0
- package/qa-dashboard/node_modules/async/select.js +93 -0
- package/qa-dashboard/node_modules/async/selectLimit.js +45 -0
- package/qa-dashboard/node_modules/async/selectSeries.js +43 -0
- package/qa-dashboard/node_modules/async/seq.js +79 -0
- package/qa-dashboard/node_modules/async/series.js +186 -0
- package/qa-dashboard/node_modules/async/setImmediate.js +45 -0
- package/qa-dashboard/node_modules/async/some.js +122 -0
- package/qa-dashboard/node_modules/async/someLimit.js +47 -0
- package/qa-dashboard/node_modules/async/someSeries.js +46 -0
- package/qa-dashboard/node_modules/async/sortBy.js +190 -0
- package/qa-dashboard/node_modules/async/timeout.js +89 -0
- package/qa-dashboard/node_modules/async/times.js +50 -0
- package/qa-dashboard/node_modules/async/timesLimit.js +43 -0
- package/qa-dashboard/node_modules/async/timesSeries.js +32 -0
- package/qa-dashboard/node_modules/async/transform.js +173 -0
- package/qa-dashboard/node_modules/async/tryEach.js +78 -0
- package/qa-dashboard/node_modules/async/unmemoize.js +25 -0
- package/qa-dashboard/node_modules/async/until.js +61 -0
- package/qa-dashboard/node_modules/async/waterfall.js +105 -0
- package/qa-dashboard/node_modules/async/whilst.js +78 -0
- package/qa-dashboard/node_modules/async/wrapSync.js +118 -0
- package/qa-dashboard/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/qa-dashboard/node_modules/balanced-match/LICENSE.md +21 -0
- package/qa-dashboard/node_modules/balanced-match/README.md +97 -0
- package/qa-dashboard/node_modules/balanced-match/index.js +62 -0
- package/qa-dashboard/node_modules/balanced-match/package.json +48 -0
- package/qa-dashboard/node_modules/basic-auth/HISTORY.md +52 -0
- package/qa-dashboard/node_modules/basic-auth/LICENSE +24 -0
- package/qa-dashboard/node_modules/basic-auth/README.md +113 -0
- package/qa-dashboard/node_modules/basic-auth/index.js +133 -0
- package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/LICENSE +21 -0
- package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/README.md +584 -0
- package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/index.d.ts +187 -0
- package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/index.js +62 -0
- package/qa-dashboard/node_modules/basic-auth/node_modules/safe-buffer/package.json +37 -0
- package/qa-dashboard/node_modules/basic-auth/package.json +41 -0
- package/qa-dashboard/node_modules/body-parser/HISTORY.md +686 -0
- package/qa-dashboard/node_modules/body-parser/LICENSE +23 -0
- package/qa-dashboard/node_modules/body-parser/README.md +476 -0
- package/qa-dashboard/node_modules/body-parser/index.js +156 -0
- package/qa-dashboard/node_modules/body-parser/lib/read.js +205 -0
- package/qa-dashboard/node_modules/body-parser/lib/types/json.js +243 -0
- package/qa-dashboard/node_modules/body-parser/lib/types/raw.js +101 -0
- package/qa-dashboard/node_modules/body-parser/lib/types/text.js +121 -0
- package/qa-dashboard/node_modules/body-parser/lib/types/urlencoded.js +299 -0
- package/qa-dashboard/node_modules/body-parser/package.json +55 -0
- package/qa-dashboard/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
- package/qa-dashboard/node_modules/brace-expansion/LICENSE +21 -0
- package/qa-dashboard/node_modules/brace-expansion/README.md +135 -0
- package/qa-dashboard/node_modules/brace-expansion/index.js +205 -0
- package/qa-dashboard/node_modules/brace-expansion/package.json +49 -0
- package/qa-dashboard/node_modules/bytes/History.md +97 -0
- package/qa-dashboard/node_modules/bytes/LICENSE +23 -0
- package/qa-dashboard/node_modules/bytes/Readme.md +152 -0
- package/qa-dashboard/node_modules/bytes/index.js +170 -0
- package/qa-dashboard/node_modules/bytes/package.json +42 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/README.md +62 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/index.js +15 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/package.json +85 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/qa-dashboard/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/call-bound/.eslintrc +13 -0
- package/qa-dashboard/node_modules/call-bound/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/call-bound/.nycrc +9 -0
- package/qa-dashboard/node_modules/call-bound/CHANGELOG.md +42 -0
- package/qa-dashboard/node_modules/call-bound/LICENSE +21 -0
- package/qa-dashboard/node_modules/call-bound/README.md +53 -0
- package/qa-dashboard/node_modules/call-bound/index.d.ts +94 -0
- package/qa-dashboard/node_modules/call-bound/index.js +19 -0
- package/qa-dashboard/node_modules/call-bound/package.json +99 -0
- package/qa-dashboard/node_modules/call-bound/test/index.js +61 -0
- package/qa-dashboard/node_modules/call-bound/tsconfig.json +10 -0
- package/qa-dashboard/node_modules/chart.js/LICENSE.md +9 -0
- package/qa-dashboard/node_modules/chart.js/README.md +38 -0
- package/qa-dashboard/node_modules/chart.js/auto/auto.cjs +6 -0
- package/qa-dashboard/node_modules/chart.js/auto/auto.d.ts +4 -0
- package/qa-dashboard/node_modules/chart.js/auto/auto.js +6 -0
- package/qa-dashboard/node_modules/chart.js/auto/package.json +14 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.cjs +11647 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.cjs.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.js +11599 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.js.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.umd.js +14 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.umd.js.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.umd.min.js +14 -0
- package/qa-dashboard/node_modules/chart.js/dist/chart.umd.min.js.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.cjs +2915 -0
- package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.cjs.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.js +2788 -0
- package/qa-dashboard/node_modules/chart.js/dist/chunks/helpers.dataset.js.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.bar.d.ts +65 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.bubble.d.ts +35 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.doughnut.d.ts +64 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.line.d.ts +13 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.pie.d.ts +3 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.polarArea.d.ts +35 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.radar.d.ts +19 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/controller.scatter.d.ts +20 -0
- package/qa-dashboard/node_modules/chart.js/dist/controllers/index.d.ts +8 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.adapters.d.ts +67 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.animation.d.ts +21 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.animations.d.ts +22 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.animations.defaults.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.animator.d.ts +67 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.config.d.ts +86 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.controller.d.ts +257 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.datasetController.d.ts +251 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.defaults.d.ts +80 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.element.d.ts +21 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.interaction.d.ts +92 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.layouts.d.ts +88 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.layouts.defaults.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.plugins.d.ts +64 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.registry.d.ts +90 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.autoskip.d.ts +19 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.d.ts +343 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.scale.defaults.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.ticks.d.ts +31 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/core.typedRegistry.d.ts +33 -0
- package/qa-dashboard/node_modules/chart.js/dist/core/index.d.ts +15 -0
- package/qa-dashboard/node_modules/chart.js/dist/elements/element.arc.d.ts +51 -0
- package/qa-dashboard/node_modules/chart.js/dist/elements/element.bar.d.ts +32 -0
- package/qa-dashboard/node_modules/chart.js/dist/elements/element.line.d.ts +87 -0
- package/qa-dashboard/node_modules/chart.js/dist/elements/element.point.d.ts +39 -0
- package/qa-dashboard/node_modules/chart.js/dist/elements/index.d.ts +4 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.canvas.d.ts +75 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.collection.d.ts +68 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.color.d.ts +13 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.config.d.ts +31 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.config.types.d.ts +41 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.core.d.ts +147 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.curve.d.ts +17 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.dataset.d.ts +2 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.dom.d.ts +48 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.easing.d.ts +40 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.extras.d.ts +45 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.interpolation.d.ts +22 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.intl.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.math.d.ts +84 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.options.d.ts +97 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.rtl.d.ts +10 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/helpers.segment.d.ts +65 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers/index.d.ts +16 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers.cjs +136 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers.cjs.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers.js +9 -0
- package/qa-dashboard/node_modules/chart.js/dist/helpers.js.map +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/index.d.ts +12 -0
- package/qa-dashboard/node_modules/chart.js/dist/index.umd.d.ts +5 -0
- package/qa-dashboard/node_modules/chart.js/dist/platform/index.d.ts +5 -0
- package/qa-dashboard/node_modules/chart.js/dist/platform/platform.base.d.ts +63 -0
- package/qa-dashboard/node_modules/chart.js/dist/platform/platform.basic.d.ts +10 -0
- package/qa-dashboard/node_modules/chart.js/dist/platform/platform.dom.d.ts +19 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/index.d.ts +7 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.colors.d.ts +11 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.decimation.d.ts +10 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.drawing.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.helper.d.ts +14 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.options.d.ts +30 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.segment.d.ts +36 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.target.d.ts +9 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/filler.target.stack.d.ts +14 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/index.d.ts +12 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.filler/simpleArc.d.ts +12 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.legend.d.ts +114 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.subtitle.d.ts +27 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.title.d.ts +61 -0
- package/qa-dashboard/node_modules/chart.js/dist/plugins/plugin.tooltip.d.ts +288 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/index.d.ts +6 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.category.d.ts +21 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.linear.d.ts +10 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.linearbase.d.ts +20 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.logarithmic.d.ts +25 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.radialLinear.d.ts +63 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.time.d.ts +130 -0
- package/qa-dashboard/node_modules/chart.js/dist/scales/scale.timeseries.d.ts +39 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/animation.d.ts +34 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/basic.d.ts +3 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/color.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/geometric.d.ts +52 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/index.d.ts +3885 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/layout.d.ts +65 -0
- package/qa-dashboard/node_modules/chart.js/dist/types/utils.d.ts +30 -0
- package/qa-dashboard/node_modules/chart.js/dist/types.d.ts +10 -0
- package/qa-dashboard/node_modules/chart.js/helpers/helpers.cjs +1 -0
- package/qa-dashboard/node_modules/chart.js/helpers/helpers.d.ts +1 -0
- package/qa-dashboard/node_modules/chart.js/helpers/helpers.js +1 -0
- package/qa-dashboard/node_modules/chart.js/helpers/package.json +14 -0
- package/qa-dashboard/node_modules/chart.js/package.json +139 -0
- package/qa-dashboard/node_modules/content-disposition/HISTORY.md +60 -0
- package/qa-dashboard/node_modules/content-disposition/LICENSE +22 -0
- package/qa-dashboard/node_modules/content-disposition/README.md +142 -0
- package/qa-dashboard/node_modules/content-disposition/index.js +458 -0
- package/qa-dashboard/node_modules/content-disposition/package.json +44 -0
- package/qa-dashboard/node_modules/content-type/HISTORY.md +29 -0
- package/qa-dashboard/node_modules/content-type/LICENSE +22 -0
- package/qa-dashboard/node_modules/content-type/README.md +94 -0
- package/qa-dashboard/node_modules/content-type/index.js +225 -0
- package/qa-dashboard/node_modules/content-type/package.json +42 -0
- package/qa-dashboard/node_modules/cookie/LICENSE +24 -0
- package/qa-dashboard/node_modules/cookie/README.md +317 -0
- package/qa-dashboard/node_modules/cookie/SECURITY.md +25 -0
- package/qa-dashboard/node_modules/cookie/index.js +335 -0
- package/qa-dashboard/node_modules/cookie/package.json +44 -0
- package/qa-dashboard/node_modules/cookie-signature/History.md +42 -0
- package/qa-dashboard/node_modules/cookie-signature/Readme.md +42 -0
- package/qa-dashboard/node_modules/cookie-signature/index.js +51 -0
- package/qa-dashboard/node_modules/cookie-signature/package.json +18 -0
- package/qa-dashboard/node_modules/debug/.coveralls.yml +1 -0
- package/qa-dashboard/node_modules/debug/.eslintrc +11 -0
- package/qa-dashboard/node_modules/debug/.travis.yml +14 -0
- package/qa-dashboard/node_modules/debug/CHANGELOG.md +362 -0
- package/qa-dashboard/node_modules/debug/LICENSE +19 -0
- package/qa-dashboard/node_modules/debug/Makefile +50 -0
- package/qa-dashboard/node_modules/debug/README.md +312 -0
- package/qa-dashboard/node_modules/debug/component.json +19 -0
- package/qa-dashboard/node_modules/debug/karma.conf.js +70 -0
- package/qa-dashboard/node_modules/debug/node.js +1 -0
- package/qa-dashboard/node_modules/debug/package.json +49 -0
- package/qa-dashboard/node_modules/debug/src/browser.js +185 -0
- package/qa-dashboard/node_modules/debug/src/debug.js +202 -0
- package/qa-dashboard/node_modules/debug/src/index.js +10 -0
- package/qa-dashboard/node_modules/debug/src/inspector-log.js +15 -0
- package/qa-dashboard/node_modules/debug/src/node.js +248 -0
- package/qa-dashboard/node_modules/depd/History.md +103 -0
- package/qa-dashboard/node_modules/depd/LICENSE +22 -0
- package/qa-dashboard/node_modules/depd/Readme.md +280 -0
- package/qa-dashboard/node_modules/depd/index.js +538 -0
- package/qa-dashboard/node_modules/depd/lib/browser/index.js +77 -0
- package/qa-dashboard/node_modules/depd/package.json +45 -0
- package/qa-dashboard/node_modules/destroy/LICENSE +23 -0
- package/qa-dashboard/node_modules/destroy/README.md +63 -0
- package/qa-dashboard/node_modules/destroy/index.js +209 -0
- package/qa-dashboard/node_modules/destroy/package.json +48 -0
- package/qa-dashboard/node_modules/dotenv/CHANGELOG.md +520 -0
- package/qa-dashboard/node_modules/dotenv/LICENSE +23 -0
- package/qa-dashboard/node_modules/dotenv/README-es.md +411 -0
- package/qa-dashboard/node_modules/dotenv/README.md +645 -0
- package/qa-dashboard/node_modules/dotenv/SECURITY.md +1 -0
- package/qa-dashboard/node_modules/dotenv/config.d.ts +1 -0
- package/qa-dashboard/node_modules/dotenv/config.js +9 -0
- package/qa-dashboard/node_modules/dotenv/lib/cli-options.js +17 -0
- package/qa-dashboard/node_modules/dotenv/lib/env-options.js +28 -0
- package/qa-dashboard/node_modules/dotenv/lib/main.d.ts +162 -0
- package/qa-dashboard/node_modules/dotenv/lib/main.js +386 -0
- package/qa-dashboard/node_modules/dotenv/package.json +62 -0
- package/qa-dashboard/node_modules/dunder-proto/.eslintrc +5 -0
- package/qa-dashboard/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/dunder-proto/.nycrc +13 -0
- package/qa-dashboard/node_modules/dunder-proto/CHANGELOG.md +24 -0
- package/qa-dashboard/node_modules/dunder-proto/LICENSE +21 -0
- package/qa-dashboard/node_modules/dunder-proto/README.md +54 -0
- package/qa-dashboard/node_modules/dunder-proto/get.d.ts +5 -0
- package/qa-dashboard/node_modules/dunder-proto/get.js +30 -0
- package/qa-dashboard/node_modules/dunder-proto/package.json +76 -0
- package/qa-dashboard/node_modules/dunder-proto/set.d.ts +5 -0
- package/qa-dashboard/node_modules/dunder-proto/set.js +35 -0
- package/qa-dashboard/node_modules/dunder-proto/test/get.js +34 -0
- package/qa-dashboard/node_modules/dunder-proto/test/index.js +4 -0
- package/qa-dashboard/node_modules/dunder-proto/test/set.js +50 -0
- package/qa-dashboard/node_modules/dunder-proto/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/ee-first/LICENSE +22 -0
- package/qa-dashboard/node_modules/ee-first/README.md +80 -0
- package/qa-dashboard/node_modules/ee-first/index.js +95 -0
- package/qa-dashboard/node_modules/ee-first/package.json +29 -0
- package/qa-dashboard/node_modules/ejs/LICENSE +202 -0
- package/qa-dashboard/node_modules/ejs/README.md +358 -0
- package/qa-dashboard/node_modules/ejs/bin/cli.js +211 -0
- package/qa-dashboard/node_modules/ejs/ejs.js +1746 -0
- package/qa-dashboard/node_modules/ejs/ejs.min.js +1 -0
- package/qa-dashboard/node_modules/ejs/jakefile.js +88 -0
- package/qa-dashboard/node_modules/ejs/lib/ejs.js +952 -0
- package/qa-dashboard/node_modules/ejs/lib/utils.js +250 -0
- package/qa-dashboard/node_modules/ejs/package.json +42 -0
- package/qa-dashboard/node_modules/ejs/usage.txt +24 -0
- package/qa-dashboard/node_modules/encodeurl/LICENSE +22 -0
- package/qa-dashboard/node_modules/encodeurl/README.md +109 -0
- package/qa-dashboard/node_modules/encodeurl/index.js +60 -0
- package/qa-dashboard/node_modules/encodeurl/package.json +40 -0
- package/qa-dashboard/node_modules/es-define-property/.eslintrc +13 -0
- package/qa-dashboard/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/es-define-property/.nycrc +9 -0
- package/qa-dashboard/node_modules/es-define-property/CHANGELOG.md +29 -0
- package/qa-dashboard/node_modules/es-define-property/LICENSE +21 -0
- package/qa-dashboard/node_modules/es-define-property/README.md +49 -0
- package/qa-dashboard/node_modules/es-define-property/index.d.ts +3 -0
- package/qa-dashboard/node_modules/es-define-property/index.js +14 -0
- package/qa-dashboard/node_modules/es-define-property/package.json +81 -0
- package/qa-dashboard/node_modules/es-define-property/test/index.js +56 -0
- package/qa-dashboard/node_modules/es-define-property/tsconfig.json +10 -0
- package/qa-dashboard/node_modules/es-errors/.eslintrc +5 -0
- package/qa-dashboard/node_modules/es-errors/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/es-errors/CHANGELOG.md +40 -0
- package/qa-dashboard/node_modules/es-errors/LICENSE +21 -0
- package/qa-dashboard/node_modules/es-errors/README.md +55 -0
- package/qa-dashboard/node_modules/es-errors/eval.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/eval.js +4 -0
- package/qa-dashboard/node_modules/es-errors/index.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/index.js +4 -0
- package/qa-dashboard/node_modules/es-errors/package.json +80 -0
- package/qa-dashboard/node_modules/es-errors/range.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/range.js +4 -0
- package/qa-dashboard/node_modules/es-errors/ref.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/ref.js +4 -0
- package/qa-dashboard/node_modules/es-errors/syntax.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/syntax.js +4 -0
- package/qa-dashboard/node_modules/es-errors/test/index.js +19 -0
- package/qa-dashboard/node_modules/es-errors/tsconfig.json +49 -0
- package/qa-dashboard/node_modules/es-errors/type.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/type.js +4 -0
- package/qa-dashboard/node_modules/es-errors/uri.d.ts +3 -0
- package/qa-dashboard/node_modules/es-errors/uri.js +4 -0
- package/qa-dashboard/node_modules/es-object-atoms/.eslintrc +16 -0
- package/qa-dashboard/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- package/qa-dashboard/node_modules/es-object-atoms/LICENSE +21 -0
- package/qa-dashboard/node_modules/es-object-atoms/README.md +63 -0
- package/qa-dashboard/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/qa-dashboard/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/qa-dashboard/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/qa-dashboard/node_modules/es-object-atoms/ToObject.js +10 -0
- package/qa-dashboard/node_modules/es-object-atoms/index.d.ts +3 -0
- package/qa-dashboard/node_modules/es-object-atoms/index.js +4 -0
- package/qa-dashboard/node_modules/es-object-atoms/isObject.d.ts +3 -0
- package/qa-dashboard/node_modules/es-object-atoms/isObject.js +6 -0
- package/qa-dashboard/node_modules/es-object-atoms/package.json +80 -0
- package/qa-dashboard/node_modules/es-object-atoms/test/index.js +38 -0
- package/qa-dashboard/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/qa-dashboard/node_modules/escape-html/LICENSE +24 -0
- package/qa-dashboard/node_modules/escape-html/Readme.md +43 -0
- package/qa-dashboard/node_modules/escape-html/index.js +78 -0
- package/qa-dashboard/node_modules/escape-html/package.json +24 -0
- package/qa-dashboard/node_modules/etag/HISTORY.md +83 -0
- package/qa-dashboard/node_modules/etag/LICENSE +22 -0
- package/qa-dashboard/node_modules/etag/README.md +159 -0
- package/qa-dashboard/node_modules/etag/index.js +131 -0
- package/qa-dashboard/node_modules/etag/package.json +47 -0
- package/qa-dashboard/node_modules/express/History.md +3676 -0
- package/qa-dashboard/node_modules/express/LICENSE +24 -0
- package/qa-dashboard/node_modules/express/Readme.md +260 -0
- package/qa-dashboard/node_modules/express/index.js +11 -0
- package/qa-dashboard/node_modules/express/lib/application.js +661 -0
- package/qa-dashboard/node_modules/express/lib/express.js +116 -0
- package/qa-dashboard/node_modules/express/lib/middleware/init.js +43 -0
- package/qa-dashboard/node_modules/express/lib/middleware/query.js +47 -0
- package/qa-dashboard/node_modules/express/lib/request.js +525 -0
- package/qa-dashboard/node_modules/express/lib/response.js +1179 -0
- package/qa-dashboard/node_modules/express/lib/router/index.js +673 -0
- package/qa-dashboard/node_modules/express/lib/router/layer.js +181 -0
- package/qa-dashboard/node_modules/express/lib/router/route.js +230 -0
- package/qa-dashboard/node_modules/express/lib/utils.js +304 -0
- package/qa-dashboard/node_modules/express/lib/view.js +182 -0
- package/qa-dashboard/node_modules/express/package.json +102 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/.travis.yml +3 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/LICENSE +7 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/Readme.md +266 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/example/index.js +27 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/example/views/layout.ejs +33 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/example/views/view.ejs +37 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/lib/express-layouts.js +117 -0
- package/qa-dashboard/node_modules/express-ejs-layouts/package.json +24 -0
- package/qa-dashboard/node_modules/filelist/README.md +84 -0
- package/qa-dashboard/node_modules/filelist/index.d.ts +110 -0
- package/qa-dashboard/node_modules/filelist/index.js +495 -0
- package/qa-dashboard/node_modules/filelist/jakefile.js +15 -0
- package/qa-dashboard/node_modules/filelist/package.json +28 -0
- package/qa-dashboard/node_modules/finalhandler/HISTORY.md +216 -0
- package/qa-dashboard/node_modules/finalhandler/LICENSE +22 -0
- package/qa-dashboard/node_modules/finalhandler/README.md +147 -0
- package/qa-dashboard/node_modules/finalhandler/SECURITY.md +25 -0
- package/qa-dashboard/node_modules/finalhandler/index.js +341 -0
- package/qa-dashboard/node_modules/finalhandler/package.json +47 -0
- package/qa-dashboard/node_modules/forwarded/HISTORY.md +21 -0
- package/qa-dashboard/node_modules/forwarded/LICENSE +22 -0
- package/qa-dashboard/node_modules/forwarded/README.md +57 -0
- package/qa-dashboard/node_modules/forwarded/index.js +90 -0
- package/qa-dashboard/node_modules/forwarded/package.json +45 -0
- package/qa-dashboard/node_modules/fresh/HISTORY.md +70 -0
- package/qa-dashboard/node_modules/fresh/LICENSE +23 -0
- package/qa-dashboard/node_modules/fresh/README.md +119 -0
- package/qa-dashboard/node_modules/fresh/index.js +137 -0
- package/qa-dashboard/node_modules/fresh/package.json +46 -0
- package/qa-dashboard/node_modules/function-bind/.eslintrc +21 -0
- package/qa-dashboard/node_modules/function-bind/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/function-bind/.github/SECURITY.md +3 -0
- package/qa-dashboard/node_modules/function-bind/.nycrc +13 -0
- package/qa-dashboard/node_modules/function-bind/CHANGELOG.md +136 -0
- package/qa-dashboard/node_modules/function-bind/LICENSE +20 -0
- package/qa-dashboard/node_modules/function-bind/README.md +46 -0
- package/qa-dashboard/node_modules/function-bind/implementation.js +84 -0
- package/qa-dashboard/node_modules/function-bind/index.js +5 -0
- package/qa-dashboard/node_modules/function-bind/package.json +87 -0
- package/qa-dashboard/node_modules/function-bind/test/.eslintrc +9 -0
- package/qa-dashboard/node_modules/function-bind/test/index.js +252 -0
- package/qa-dashboard/node_modules/get-intrinsic/.eslintrc +42 -0
- package/qa-dashboard/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/get-intrinsic/.nycrc +9 -0
- package/qa-dashboard/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- package/qa-dashboard/node_modules/get-intrinsic/LICENSE +21 -0
- package/qa-dashboard/node_modules/get-intrinsic/README.md +71 -0
- package/qa-dashboard/node_modules/get-intrinsic/index.js +378 -0
- package/qa-dashboard/node_modules/get-intrinsic/package.json +97 -0
- package/qa-dashboard/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/qa-dashboard/node_modules/get-proto/.eslintrc +10 -0
- package/qa-dashboard/node_modules/get-proto/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/get-proto/.nycrc +9 -0
- package/qa-dashboard/node_modules/get-proto/CHANGELOG.md +21 -0
- package/qa-dashboard/node_modules/get-proto/LICENSE +21 -0
- package/qa-dashboard/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/qa-dashboard/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/qa-dashboard/node_modules/get-proto/README.md +50 -0
- package/qa-dashboard/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/qa-dashboard/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/qa-dashboard/node_modules/get-proto/index.d.ts +5 -0
- package/qa-dashboard/node_modules/get-proto/index.js +27 -0
- package/qa-dashboard/node_modules/get-proto/package.json +81 -0
- package/qa-dashboard/node_modules/get-proto/test/index.js +68 -0
- package/qa-dashboard/node_modules/get-proto/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/gopd/.eslintrc +16 -0
- package/qa-dashboard/node_modules/gopd/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/gopd/CHANGELOG.md +45 -0
- package/qa-dashboard/node_modules/gopd/LICENSE +21 -0
- package/qa-dashboard/node_modules/gopd/README.md +40 -0
- package/qa-dashboard/node_modules/gopd/gOPD.d.ts +1 -0
- package/qa-dashboard/node_modules/gopd/gOPD.js +4 -0
- package/qa-dashboard/node_modules/gopd/index.d.ts +5 -0
- package/qa-dashboard/node_modules/gopd/index.js +15 -0
- package/qa-dashboard/node_modules/gopd/package.json +77 -0
- package/qa-dashboard/node_modules/gopd/test/index.js +36 -0
- package/qa-dashboard/node_modules/gopd/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/has-symbols/.eslintrc +11 -0
- package/qa-dashboard/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/has-symbols/.nycrc +9 -0
- package/qa-dashboard/node_modules/has-symbols/CHANGELOG.md +91 -0
- package/qa-dashboard/node_modules/has-symbols/LICENSE +21 -0
- package/qa-dashboard/node_modules/has-symbols/README.md +46 -0
- package/qa-dashboard/node_modules/has-symbols/index.d.ts +3 -0
- package/qa-dashboard/node_modules/has-symbols/index.js +14 -0
- package/qa-dashboard/node_modules/has-symbols/package.json +111 -0
- package/qa-dashboard/node_modules/has-symbols/shams.d.ts +3 -0
- package/qa-dashboard/node_modules/has-symbols/shams.js +45 -0
- package/qa-dashboard/node_modules/has-symbols/test/index.js +22 -0
- package/qa-dashboard/node_modules/has-symbols/test/shams/core-js.js +29 -0
- package/qa-dashboard/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- package/qa-dashboard/node_modules/has-symbols/test/tests.js +58 -0
- package/qa-dashboard/node_modules/has-symbols/tsconfig.json +10 -0
- package/qa-dashboard/node_modules/hasown/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/hasown/.nycrc +13 -0
- package/qa-dashboard/node_modules/hasown/CHANGELOG.md +51 -0
- package/qa-dashboard/node_modules/hasown/LICENSE +21 -0
- package/qa-dashboard/node_modules/hasown/README.md +40 -0
- package/qa-dashboard/node_modules/hasown/eslint.config.mjs +6 -0
- package/qa-dashboard/node_modules/hasown/index.d.ts +4 -0
- package/qa-dashboard/node_modules/hasown/index.js +8 -0
- package/qa-dashboard/node_modules/hasown/package.json +92 -0
- package/qa-dashboard/node_modules/hasown/tsconfig.json +6 -0
- package/qa-dashboard/node_modules/http-errors/HISTORY.md +186 -0
- package/qa-dashboard/node_modules/http-errors/LICENSE +23 -0
- package/qa-dashboard/node_modules/http-errors/README.md +169 -0
- package/qa-dashboard/node_modules/http-errors/index.js +290 -0
- package/qa-dashboard/node_modules/http-errors/package.json +54 -0
- package/qa-dashboard/node_modules/iconv-lite/Changelog.md +162 -0
- package/qa-dashboard/node_modules/iconv-lite/LICENSE +21 -0
- package/qa-dashboard/node_modules/iconv-lite/README.md +156 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/index.js +22 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/internal.js +188 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/utf16.js +177 -0
- package/qa-dashboard/node_modules/iconv-lite/encodings/utf7.js +290 -0
- package/qa-dashboard/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- package/qa-dashboard/node_modules/iconv-lite/lib/extend-node.js +217 -0
- package/qa-dashboard/node_modules/iconv-lite/lib/index.d.ts +24 -0
- package/qa-dashboard/node_modules/iconv-lite/lib/index.js +153 -0
- package/qa-dashboard/node_modules/iconv-lite/lib/streams.js +121 -0
- package/qa-dashboard/node_modules/iconv-lite/package.json +46 -0
- package/qa-dashboard/node_modules/inherits/LICENSE +16 -0
- package/qa-dashboard/node_modules/inherits/README.md +42 -0
- package/qa-dashboard/node_modules/inherits/inherits.js +9 -0
- package/qa-dashboard/node_modules/inherits/inherits_browser.js +27 -0
- package/qa-dashboard/node_modules/inherits/package.json +29 -0
- package/qa-dashboard/node_modules/ipaddr.js/LICENSE +19 -0
- package/qa-dashboard/node_modules/ipaddr.js/README.md +233 -0
- package/qa-dashboard/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/qa-dashboard/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/qa-dashboard/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/qa-dashboard/node_modules/ipaddr.js/package.json +35 -0
- package/qa-dashboard/node_modules/jake/Makefile +44 -0
- package/qa-dashboard/node_modules/jake/README.md +17 -0
- package/qa-dashboard/node_modules/jake/bin/bash_completion.sh +41 -0
- package/qa-dashboard/node_modules/jake/bin/cli.js +31 -0
- package/qa-dashboard/node_modules/jake/jakefile.js +112 -0
- package/qa-dashboard/node_modules/jake/lib/api.js +409 -0
- package/qa-dashboard/node_modules/jake/lib/jake.js +330 -0
- package/qa-dashboard/node_modules/jake/lib/loader.js +174 -0
- package/qa-dashboard/node_modules/jake/lib/namespace.js +115 -0
- package/qa-dashboard/node_modules/jake/lib/package_task.js +406 -0
- package/qa-dashboard/node_modules/jake/lib/parseargs.js +134 -0
- package/qa-dashboard/node_modules/jake/lib/program.js +282 -0
- package/qa-dashboard/node_modules/jake/lib/publish_task.js +290 -0
- package/qa-dashboard/node_modules/jake/lib/rule.js +311 -0
- package/qa-dashboard/node_modules/jake/lib/task/directory_task.js +30 -0
- package/qa-dashboard/node_modules/jake/lib/task/file_task.js +126 -0
- package/qa-dashboard/node_modules/jake/lib/task/index.js +9 -0
- package/qa-dashboard/node_modules/jake/lib/task/task.js +458 -0
- package/qa-dashboard/node_modules/jake/lib/test_task.js +270 -0
- package/qa-dashboard/node_modules/jake/lib/utils/file.js +286 -0
- package/qa-dashboard/node_modules/jake/lib/utils/index.js +297 -0
- package/qa-dashboard/node_modules/jake/lib/utils/logger.js +24 -0
- package/qa-dashboard/node_modules/jake/package.json +44 -0
- package/qa-dashboard/node_modules/jake/test/integration/concurrent.js +45 -0
- package/qa-dashboard/node_modules/jake/test/integration/file.js +228 -0
- package/qa-dashboard/node_modules/jake/test/integration/file_task.js +141 -0
- package/qa-dashboard/node_modules/jake/test/integration/helpers.js +80 -0
- package/qa-dashboard/node_modules/jake/test/integration/jakefile.js +352 -0
- package/qa-dashboard/node_modules/jake/test/integration/jakelib/concurrent.jake.js +113 -0
- package/qa-dashboard/node_modules/jake/test/integration/jakelib/publish.jake.js +49 -0
- package/qa-dashboard/node_modules/jake/test/integration/jakelib/required_module.jake.js +10 -0
- package/qa-dashboard/node_modules/jake/test/integration/jakelib/rule.jake.js +222 -0
- package/qa-dashboard/node_modules/jake/test/integration/list_tasks.js +15 -0
- package/qa-dashboard/node_modules/jake/test/integration/publish_task.js +27 -0
- package/qa-dashboard/node_modules/jake/test/integration/rule.js +217 -0
- package/qa-dashboard/node_modules/jake/test/integration/selfdep.js +42 -0
- package/qa-dashboard/node_modules/jake/test/integration/task_base.js +167 -0
- package/qa-dashboard/node_modules/jake/test/unit/jakefile.js +36 -0
- package/qa-dashboard/node_modules/jake/test/unit/namespace.js +77 -0
- package/qa-dashboard/node_modules/jake/test/unit/parseargs.js +169 -0
- package/qa-dashboard/node_modules/jake/usage.txt +17 -0
- package/qa-dashboard/node_modules/math-intrinsics/.eslintrc +16 -0
- package/qa-dashboard/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/qa-dashboard/node_modules/math-intrinsics/LICENSE +21 -0
- package/qa-dashboard/node_modules/math-intrinsics/README.md +50 -0
- package/qa-dashboard/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/abs.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/qa-dashboard/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/floor.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/isFinite.js +12 -0
- package/qa-dashboard/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/isInteger.js +16 -0
- package/qa-dashboard/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/isNaN.js +6 -0
- package/qa-dashboard/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/qa-dashboard/node_modules/math-intrinsics/max.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/max.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/min.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/min.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/mod.js +9 -0
- package/qa-dashboard/node_modules/math-intrinsics/package.json +86 -0
- package/qa-dashboard/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/pow.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/round.d.ts +1 -0
- package/qa-dashboard/node_modules/math-intrinsics/round.js +4 -0
- package/qa-dashboard/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/qa-dashboard/node_modules/math-intrinsics/sign.js +11 -0
- package/qa-dashboard/node_modules/math-intrinsics/test/index.js +192 -0
- package/qa-dashboard/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/qa-dashboard/node_modules/media-typer/HISTORY.md +22 -0
- package/qa-dashboard/node_modules/media-typer/LICENSE +22 -0
- package/qa-dashboard/node_modules/media-typer/README.md +81 -0
- package/qa-dashboard/node_modules/media-typer/index.js +270 -0
- package/qa-dashboard/node_modules/media-typer/package.json +26 -0
- package/qa-dashboard/node_modules/merge-descriptors/HISTORY.md +21 -0
- package/qa-dashboard/node_modules/merge-descriptors/LICENSE +23 -0
- package/qa-dashboard/node_modules/merge-descriptors/README.md +49 -0
- package/qa-dashboard/node_modules/merge-descriptors/index.js +60 -0
- package/qa-dashboard/node_modules/merge-descriptors/package.json +39 -0
- package/qa-dashboard/node_modules/methods/HISTORY.md +29 -0
- package/qa-dashboard/node_modules/methods/LICENSE +24 -0
- package/qa-dashboard/node_modules/methods/README.md +51 -0
- package/qa-dashboard/node_modules/methods/index.js +69 -0
- package/qa-dashboard/node_modules/methods/package.json +36 -0
- package/qa-dashboard/node_modules/mime/CHANGELOG.md +164 -0
- package/qa-dashboard/node_modules/mime/LICENSE +21 -0
- package/qa-dashboard/node_modules/mime/README.md +90 -0
- package/qa-dashboard/node_modules/mime/cli.js +8 -0
- package/qa-dashboard/node_modules/mime/mime.js +108 -0
- package/qa-dashboard/node_modules/mime/package.json +44 -0
- package/qa-dashboard/node_modules/mime/src/build.js +53 -0
- package/qa-dashboard/node_modules/mime/src/test.js +60 -0
- package/qa-dashboard/node_modules/mime/types.json +1 -0
- package/qa-dashboard/node_modules/mime-db/HISTORY.md +507 -0
- package/qa-dashboard/node_modules/mime-db/LICENSE +23 -0
- package/qa-dashboard/node_modules/mime-db/README.md +100 -0
- package/qa-dashboard/node_modules/mime-db/db.json +8519 -0
- package/qa-dashboard/node_modules/mime-db/index.js +12 -0
- package/qa-dashboard/node_modules/mime-db/package.json +60 -0
- package/qa-dashboard/node_modules/mime-types/HISTORY.md +397 -0
- package/qa-dashboard/node_modules/mime-types/LICENSE +23 -0
- package/qa-dashboard/node_modules/mime-types/README.md +113 -0
- package/qa-dashboard/node_modules/mime-types/index.js +188 -0
- package/qa-dashboard/node_modules/mime-types/package.json +44 -0
- package/qa-dashboard/node_modules/minimatch/LICENSE +15 -0
- package/qa-dashboard/node_modules/minimatch/README.md +296 -0
- package/qa-dashboard/node_modules/minimatch/changelog.md +35 -0
- package/qa-dashboard/node_modules/minimatch/lib/path.js +4 -0
- package/qa-dashboard/node_modules/minimatch/minimatch.js +996 -0
- package/qa-dashboard/node_modules/minimatch/package.json +35 -0
- package/qa-dashboard/node_modules/morgan/HISTORY.md +221 -0
- package/qa-dashboard/node_modules/morgan/LICENSE +23 -0
- package/qa-dashboard/node_modules/morgan/README.md +436 -0
- package/qa-dashboard/node_modules/morgan/index.js +544 -0
- package/qa-dashboard/node_modules/morgan/node_modules/on-finished/HISTORY.md +88 -0
- package/qa-dashboard/node_modules/morgan/node_modules/on-finished/LICENSE +23 -0
- package/qa-dashboard/node_modules/morgan/node_modules/on-finished/README.md +154 -0
- package/qa-dashboard/node_modules/morgan/node_modules/on-finished/index.js +196 -0
- package/qa-dashboard/node_modules/morgan/node_modules/on-finished/package.json +31 -0
- package/qa-dashboard/node_modules/morgan/package.json +52 -0
- package/qa-dashboard/node_modules/ms/index.js +152 -0
- package/qa-dashboard/node_modules/ms/license.md +21 -0
- package/qa-dashboard/node_modules/ms/package.json +37 -0
- package/qa-dashboard/node_modules/ms/readme.md +51 -0
- package/qa-dashboard/node_modules/negotiator/HISTORY.md +108 -0
- package/qa-dashboard/node_modules/negotiator/LICENSE +24 -0
- package/qa-dashboard/node_modules/negotiator/README.md +203 -0
- package/qa-dashboard/node_modules/negotiator/index.js +82 -0
- package/qa-dashboard/node_modules/negotiator/lib/charset.js +169 -0
- package/qa-dashboard/node_modules/negotiator/lib/encoding.js +184 -0
- package/qa-dashboard/node_modules/negotiator/lib/language.js +179 -0
- package/qa-dashboard/node_modules/negotiator/lib/mediaType.js +294 -0
- package/qa-dashboard/node_modules/negotiator/package.json +42 -0
- package/qa-dashboard/node_modules/object-inspect/.eslintrc +53 -0
- package/qa-dashboard/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/object-inspect/.nycrc +13 -0
- package/qa-dashboard/node_modules/object-inspect/CHANGELOG.md +424 -0
- package/qa-dashboard/node_modules/object-inspect/LICENSE +21 -0
- package/qa-dashboard/node_modules/object-inspect/example/all.js +23 -0
- package/qa-dashboard/node_modules/object-inspect/example/circular.js +6 -0
- package/qa-dashboard/node_modules/object-inspect/example/fn.js +5 -0
- package/qa-dashboard/node_modules/object-inspect/example/inspect.js +10 -0
- package/qa-dashboard/node_modules/object-inspect/index.js +544 -0
- package/qa-dashboard/node_modules/object-inspect/package-support.json +20 -0
- package/qa-dashboard/node_modules/object-inspect/package.json +105 -0
- package/qa-dashboard/node_modules/object-inspect/readme.markdown +84 -0
- package/qa-dashboard/node_modules/object-inspect/test/bigint.js +58 -0
- package/qa-dashboard/node_modules/object-inspect/test/browser/dom.js +15 -0
- package/qa-dashboard/node_modules/object-inspect/test/circular.js +16 -0
- package/qa-dashboard/node_modules/object-inspect/test/deep.js +12 -0
- package/qa-dashboard/node_modules/object-inspect/test/element.js +53 -0
- package/qa-dashboard/node_modules/object-inspect/test/err.js +48 -0
- package/qa-dashboard/node_modules/object-inspect/test/fakes.js +29 -0
- package/qa-dashboard/node_modules/object-inspect/test/fn.js +76 -0
- package/qa-dashboard/node_modules/object-inspect/test/global.js +17 -0
- package/qa-dashboard/node_modules/object-inspect/test/has.js +15 -0
- package/qa-dashboard/node_modules/object-inspect/test/holes.js +15 -0
- package/qa-dashboard/node_modules/object-inspect/test/indent-option.js +271 -0
- package/qa-dashboard/node_modules/object-inspect/test/inspect.js +139 -0
- package/qa-dashboard/node_modules/object-inspect/test/lowbyte.js +12 -0
- package/qa-dashboard/node_modules/object-inspect/test/number.js +58 -0
- package/qa-dashboard/node_modules/object-inspect/test/quoteStyle.js +26 -0
- package/qa-dashboard/node_modules/object-inspect/test/toStringTag.js +40 -0
- package/qa-dashboard/node_modules/object-inspect/test/undef.js +12 -0
- package/qa-dashboard/node_modules/object-inspect/test/values.js +261 -0
- package/qa-dashboard/node_modules/object-inspect/test-core-js.js +26 -0
- package/qa-dashboard/node_modules/object-inspect/util.inspect.js +1 -0
- package/qa-dashboard/node_modules/on-finished/HISTORY.md +98 -0
- package/qa-dashboard/node_modules/on-finished/LICENSE +23 -0
- package/qa-dashboard/node_modules/on-finished/README.md +162 -0
- package/qa-dashboard/node_modules/on-finished/index.js +234 -0
- package/qa-dashboard/node_modules/on-finished/package.json +39 -0
- package/qa-dashboard/node_modules/on-headers/HISTORY.md +26 -0
- package/qa-dashboard/node_modules/on-headers/LICENSE +22 -0
- package/qa-dashboard/node_modules/on-headers/README.md +81 -0
- package/qa-dashboard/node_modules/on-headers/index.js +180 -0
- package/qa-dashboard/node_modules/on-headers/package.json +44 -0
- package/qa-dashboard/node_modules/parseurl/HISTORY.md +58 -0
- package/qa-dashboard/node_modules/parseurl/LICENSE +24 -0
- package/qa-dashboard/node_modules/parseurl/README.md +133 -0
- package/qa-dashboard/node_modules/parseurl/index.js +158 -0
- package/qa-dashboard/node_modules/parseurl/package.json +40 -0
- package/qa-dashboard/node_modules/path-to-regexp/LICENSE +21 -0
- package/qa-dashboard/node_modules/path-to-regexp/Readme.md +35 -0
- package/qa-dashboard/node_modules/path-to-regexp/index.js +158 -0
- package/qa-dashboard/node_modules/path-to-regexp/package.json +30 -0
- package/qa-dashboard/node_modules/picocolors/LICENSE +15 -0
- package/qa-dashboard/node_modules/picocolors/README.md +21 -0
- package/qa-dashboard/node_modules/picocolors/package.json +25 -0
- package/qa-dashboard/node_modules/picocolors/picocolors.browser.js +4 -0
- package/qa-dashboard/node_modules/picocolors/picocolors.d.ts +5 -0
- package/qa-dashboard/node_modules/picocolors/picocolors.js +75 -0
- package/qa-dashboard/node_modules/picocolors/types.d.ts +51 -0
- package/qa-dashboard/node_modules/proxy-addr/HISTORY.md +161 -0
- package/qa-dashboard/node_modules/proxy-addr/LICENSE +22 -0
- package/qa-dashboard/node_modules/proxy-addr/README.md +139 -0
- package/qa-dashboard/node_modules/proxy-addr/index.js +327 -0
- package/qa-dashboard/node_modules/proxy-addr/package.json +47 -0
- package/qa-dashboard/node_modules/qs/.editorconfig +46 -0
- package/qa-dashboard/node_modules/qs/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/qs/.github/SECURITY.md +11 -0
- package/qa-dashboard/node_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/qa-dashboard/node_modules/qs/.nycrc +13 -0
- package/qa-dashboard/node_modules/qs/CHANGELOG.md +822 -0
- package/qa-dashboard/node_modules/qs/LICENSE.md +29 -0
- package/qa-dashboard/node_modules/qs/README.md +758 -0
- package/qa-dashboard/node_modules/qs/dist/qs.js +141 -0
- package/qa-dashboard/node_modules/qs/eslint.config.mjs +57 -0
- package/qa-dashboard/node_modules/qs/lib/formats.js +23 -0
- package/qa-dashboard/node_modules/qs/lib/index.js +11 -0
- package/qa-dashboard/node_modules/qs/lib/parse.js +403 -0
- package/qa-dashboard/node_modules/qs/lib/stringify.js +363 -0
- package/qa-dashboard/node_modules/qs/lib/utils.js +342 -0
- package/qa-dashboard/node_modules/qs/package.json +94 -0
- package/qa-dashboard/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/qa-dashboard/node_modules/qs/test/parse.js +1703 -0
- package/qa-dashboard/node_modules/qs/test/stringify.js +1448 -0
- package/qa-dashboard/node_modules/qs/test/utils.js +432 -0
- package/qa-dashboard/node_modules/range-parser/HISTORY.md +56 -0
- package/qa-dashboard/node_modules/range-parser/LICENSE +23 -0
- package/qa-dashboard/node_modules/range-parser/README.md +84 -0
- package/qa-dashboard/node_modules/range-parser/index.js +162 -0
- package/qa-dashboard/node_modules/range-parser/package.json +44 -0
- package/qa-dashboard/node_modules/raw-body/LICENSE +22 -0
- package/qa-dashboard/node_modules/raw-body/README.md +223 -0
- package/qa-dashboard/node_modules/raw-body/index.d.ts +87 -0
- package/qa-dashboard/node_modules/raw-body/index.js +336 -0
- package/qa-dashboard/node_modules/raw-body/package.json +47 -0
- package/qa-dashboard/node_modules/safe-buffer/LICENSE +21 -0
- package/qa-dashboard/node_modules/safe-buffer/README.md +584 -0
- package/qa-dashboard/node_modules/safe-buffer/index.d.ts +187 -0
- package/qa-dashboard/node_modules/safe-buffer/index.js +65 -0
- package/qa-dashboard/node_modules/safe-buffer/package.json +51 -0
- package/qa-dashboard/node_modules/safer-buffer/LICENSE +21 -0
- package/qa-dashboard/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/qa-dashboard/node_modules/safer-buffer/Readme.md +156 -0
- package/qa-dashboard/node_modules/safer-buffer/dangerous.js +58 -0
- package/qa-dashboard/node_modules/safer-buffer/package.json +34 -0
- package/qa-dashboard/node_modules/safer-buffer/safer.js +77 -0
- package/qa-dashboard/node_modules/safer-buffer/tests.js +406 -0
- package/qa-dashboard/node_modules/send/HISTORY.md +538 -0
- package/qa-dashboard/node_modules/send/LICENSE +23 -0
- package/qa-dashboard/node_modules/send/README.md +327 -0
- package/qa-dashboard/node_modules/send/SECURITY.md +24 -0
- package/qa-dashboard/node_modules/send/index.js +1142 -0
- package/qa-dashboard/node_modules/send/node_modules/ms/index.js +162 -0
- package/qa-dashboard/node_modules/send/node_modules/ms/license.md +21 -0
- package/qa-dashboard/node_modules/send/node_modules/ms/package.json +38 -0
- package/qa-dashboard/node_modules/send/node_modules/ms/readme.md +59 -0
- package/qa-dashboard/node_modules/send/package.json +62 -0
- package/qa-dashboard/node_modules/serve-static/HISTORY.md +493 -0
- package/qa-dashboard/node_modules/serve-static/LICENSE +25 -0
- package/qa-dashboard/node_modules/serve-static/README.md +257 -0
- package/qa-dashboard/node_modules/serve-static/index.js +209 -0
- package/qa-dashboard/node_modules/serve-static/package.json +42 -0
- package/qa-dashboard/node_modules/setprototypeof/LICENSE +13 -0
- package/qa-dashboard/node_modules/setprototypeof/README.md +31 -0
- package/qa-dashboard/node_modules/setprototypeof/index.d.ts +2 -0
- package/qa-dashboard/node_modules/setprototypeof/index.js +17 -0
- package/qa-dashboard/node_modules/setprototypeof/package.json +38 -0
- package/qa-dashboard/node_modules/setprototypeof/test/index.js +24 -0
- package/qa-dashboard/node_modules/side-channel/.editorconfig +9 -0
- package/qa-dashboard/node_modules/side-channel/.eslintrc +12 -0
- package/qa-dashboard/node_modules/side-channel/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/side-channel/.nycrc +13 -0
- package/qa-dashboard/node_modules/side-channel/CHANGELOG.md +110 -0
- package/qa-dashboard/node_modules/side-channel/LICENSE +21 -0
- package/qa-dashboard/node_modules/side-channel/README.md +61 -0
- package/qa-dashboard/node_modules/side-channel/index.d.ts +14 -0
- package/qa-dashboard/node_modules/side-channel/index.js +43 -0
- package/qa-dashboard/node_modules/side-channel/package.json +85 -0
- package/qa-dashboard/node_modules/side-channel/test/index.js +104 -0
- package/qa-dashboard/node_modules/side-channel/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/side-channel-list/.editorconfig +9 -0
- package/qa-dashboard/node_modules/side-channel-list/.eslintrc +11 -0
- package/qa-dashboard/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/side-channel-list/.nycrc +13 -0
- package/qa-dashboard/node_modules/side-channel-list/CHANGELOG.md +36 -0
- package/qa-dashboard/node_modules/side-channel-list/LICENSE +21 -0
- package/qa-dashboard/node_modules/side-channel-list/README.md +62 -0
- package/qa-dashboard/node_modules/side-channel-list/index.d.ts +13 -0
- package/qa-dashboard/node_modules/side-channel-list/index.js +111 -0
- package/qa-dashboard/node_modules/side-channel-list/list.d.ts +14 -0
- package/qa-dashboard/node_modules/side-channel-list/package.json +77 -0
- package/qa-dashboard/node_modules/side-channel-list/test/index.js +154 -0
- package/qa-dashboard/node_modules/side-channel-list/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/side-channel-map/.editorconfig +9 -0
- package/qa-dashboard/node_modules/side-channel-map/.eslintrc +11 -0
- package/qa-dashboard/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/side-channel-map/.nycrc +13 -0
- package/qa-dashboard/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/qa-dashboard/node_modules/side-channel-map/LICENSE +21 -0
- package/qa-dashboard/node_modules/side-channel-map/README.md +62 -0
- package/qa-dashboard/node_modules/side-channel-map/index.d.ts +15 -0
- package/qa-dashboard/node_modules/side-channel-map/index.js +68 -0
- package/qa-dashboard/node_modules/side-channel-map/package.json +80 -0
- package/qa-dashboard/node_modules/side-channel-map/test/index.js +114 -0
- package/qa-dashboard/node_modules/side-channel-map/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/README.md +62 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/index.js +84 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/package.json +87 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/qa-dashboard/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/qa-dashboard/node_modules/statuses/HISTORY.md +87 -0
- package/qa-dashboard/node_modules/statuses/LICENSE +23 -0
- package/qa-dashboard/node_modules/statuses/README.md +139 -0
- package/qa-dashboard/node_modules/statuses/codes.json +65 -0
- package/qa-dashboard/node_modules/statuses/index.js +146 -0
- package/qa-dashboard/node_modules/statuses/package.json +49 -0
- package/qa-dashboard/node_modules/toidentifier/HISTORY.md +9 -0
- package/qa-dashboard/node_modules/toidentifier/LICENSE +21 -0
- package/qa-dashboard/node_modules/toidentifier/README.md +61 -0
- package/qa-dashboard/node_modules/toidentifier/index.js +32 -0
- package/qa-dashboard/node_modules/toidentifier/package.json +38 -0
- package/qa-dashboard/node_modules/type-is/HISTORY.md +259 -0
- package/qa-dashboard/node_modules/type-is/LICENSE +23 -0
- package/qa-dashboard/node_modules/type-is/README.md +170 -0
- package/qa-dashboard/node_modules/type-is/index.js +266 -0
- package/qa-dashboard/node_modules/type-is/package.json +45 -0
- package/qa-dashboard/node_modules/unpipe/HISTORY.md +4 -0
- package/qa-dashboard/node_modules/unpipe/LICENSE +22 -0
- package/qa-dashboard/node_modules/unpipe/README.md +43 -0
- package/qa-dashboard/node_modules/unpipe/index.js +69 -0
- package/qa-dashboard/node_modules/unpipe/package.json +27 -0
- package/qa-dashboard/node_modules/utils-merge/LICENSE +20 -0
- package/qa-dashboard/node_modules/utils-merge/README.md +34 -0
- package/qa-dashboard/node_modules/utils-merge/index.js +23 -0
- package/qa-dashboard/node_modules/utils-merge/package.json +40 -0
- package/qa-dashboard/node_modules/vary/HISTORY.md +39 -0
- package/qa-dashboard/node_modules/vary/LICENSE +22 -0
- package/qa-dashboard/node_modules/vary/README.md +101 -0
- package/qa-dashboard/node_modules/vary/index.js +149 -0
- package/qa-dashboard/node_modules/vary/package.json +43 -0
- package/qa-dashboard/package-lock.json +1002 -0
- package/qa-dashboard/public/css/style.css +1062 -207
- package/qa-dashboard/public/js/main.js +3 -2
- package/qa-dashboard/routes/export.js +35 -16
- package/qa-dashboard/routes/index.js +38 -1
- package/qa-dashboard/routes/runs.js +58 -6
- package/qa-dashboard/routes/stories.js +59 -15
- package/qa-dashboard/services/cli-bridge.js +47 -3
- package/qa-dashboard/services/project-manager.js +26 -0
- package/qa-dashboard/views/analytics.ejs +226 -153
- package/qa-dashboard/views/index.ejs +241 -82
- package/qa-dashboard/views/layouts/main.ejs +18 -0
- package/qa-dashboard/views/project.ejs +49 -29
- package/qa-dashboard/views/projects.ejs +7 -5
- package/qa-dashboard/views/run.ejs +97 -37
- package/qa-dashboard/views/runs.ejs +29 -38
- package/qa-dashboard/views/stories.ejs +23 -25
- package/qa-dashboard/views/story.ejs +95 -19
- package/qa-dashboard/views/test-data.ejs +24 -24
- package/scripts/executor.js +11 -7
- package/test-results/run-2026-05-18T14-50-14/execution-output.json +3 -0
- package/test-results/run-2026-05-18T14-50-43/execution-output.json +2 -0
- package/test-results/run-2026-05-18T14-50-43/execution-result.json +11 -0
- package/test-results/run-2026-05-18T14-50-43/final-test-report.md +42 -0
- package/test-results/run-2026-05-18T14-50-43/healing-report.json +15 -0
- package/test-results/run-2026-05-18T14-51-36/execution-output.json +2 -0
- package/test-results/run-2026-05-18T14-51-36/execution-result.json +11 -0
- package/test-results/run-2026-05-18T14-51-36/final-test-report.md +42 -0
- package/test-results/run-2026-05-18T14-51-36/healing-report.json +15 -0
- package/tests/us-expense-01.spec.ts +30 -0
- package/user-story/Demande-alimentation.md +24 -0
- package/.opencode/agents/qa-generator.md +0 -19
- package/.opencode/agents/qa-healer.md +0 -25
- package/.opencode/agents/qa-planner.md +0 -20
- package/.qa-workflow.json +0 -22
- package/opencode.json +0 -31
|
@@ -1,69 +1,116 @@
|
|
|
1
1
|
<% layout = 'layouts/main' %>
|
|
2
|
-
<% title = 'Run: ' + run.id %>
|
|
2
|
+
<% title = 'Run: ' + (typeof run !== 'undefined' && run && run.id ? run.id.substring(0, 16) : 'Details') %>
|
|
3
3
|
|
|
4
4
|
<div class="page-header">
|
|
5
|
-
<h1>Run
|
|
5
|
+
<h1>Run Details</h1>
|
|
6
6
|
<div class="header-actions">
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
<% if (typeof run !== 'undefined' && run && run.result) { %>
|
|
8
|
+
<span class="badge <%= run.result.success ? 'badge-pass' : 'badge-fail' %>" style="font-size:0.85rem;padding:0.4rem 1rem;">
|
|
9
|
+
<%= run.result.success ? '✅ PASSED' : (run.result.success === null ? '⏳ RUNNING' : '❌ FAILED') %>
|
|
10
|
+
</span>
|
|
11
|
+
<% } %>
|
|
12
|
+
<a href="/runs?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-sm">← Back to Runs</a>
|
|
9
13
|
</div>
|
|
10
14
|
</div>
|
|
11
15
|
|
|
16
|
+
<% if (typeof run === 'undefined' || !run || !run.result) { %>
|
|
17
|
+
<div class="empty-state">
|
|
18
|
+
<p>Aucun résultat d'exécution trouvé pour ce run.</p>
|
|
19
|
+
<a href="/runs?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-primary" style="margin-top:0.5rem;">Retour aux runs</a>
|
|
20
|
+
</div>
|
|
21
|
+
<% } else { %>
|
|
22
|
+
|
|
12
23
|
<div class="row">
|
|
24
|
+
<!-- Left Side: Summary & Actions -->
|
|
13
25
|
<div class="col col-30">
|
|
14
|
-
<div class="card">
|
|
15
|
-
<h3
|
|
26
|
+
<div class="card card-cream">
|
|
27
|
+
<h3>📊 Run Summary</h3>
|
|
16
28
|
<table class="info-table">
|
|
17
|
-
<tr
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<tr
|
|
29
|
+
<tr>
|
|
30
|
+
<td>Status</td>
|
|
31
|
+
<td><strong><%= run.result.success ? 'Passed' : (run.result.success === null ? 'In Progress' : 'Failed') %></strong></td>
|
|
32
|
+
</tr>
|
|
33
|
+
<tr>
|
|
34
|
+
<td>Duration</td>
|
|
35
|
+
<td><strong><%= run.result.duration ? (run.result.duration / 1000).toFixed(1) + 's' : 'N/A' %></strong></td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td>Test Suite</td>
|
|
39
|
+
<td><code style="font-family:var(--font-mono);font-size:0.78rem;"><%= run.result.test || 'All' %></code></td>
|
|
40
|
+
</tr>
|
|
41
|
+
<tr>
|
|
42
|
+
<td>Timestamp</td>
|
|
43
|
+
<td><%= run.result.timestamp ? new Date(run.result.timestamp).toLocaleString() : 'N/A' %></td>
|
|
44
|
+
</tr>
|
|
45
|
+
<tr>
|
|
46
|
+
<td>Failures</td>
|
|
47
|
+
<td>
|
|
48
|
+
<span style="font-weight:600;color:<%= run.result.failedTests && run.result.failedTests.length > 0 ? 'var(--danger)' : 'var(--success)' %>">
|
|
49
|
+
<%= run.result.failedTests ? run.result.failedTests.length : 0 %>
|
|
50
|
+
</span>
|
|
51
|
+
</td>
|
|
52
|
+
</tr>
|
|
22
53
|
</table>
|
|
23
54
|
</div>
|
|
24
55
|
|
|
25
56
|
<div class="card">
|
|
26
|
-
<h3
|
|
57
|
+
<h3>📂 Report Actions</h3>
|
|
27
58
|
<div class="action-buttons-vertical">
|
|
28
59
|
<% if (run.report) { %>
|
|
29
|
-
|
|
30
|
-
|
|
60
|
+
<a href="/export/report/<%= run.id %>?project=<%= project.id %>" class="btn btn-primary" target="_blank">Export HTML Report</a>
|
|
61
|
+
<a href="/export/pdf/<%= run.id %>?project=<%= project.id %>" class="btn">Download Raw (.txt)</a>
|
|
31
62
|
<% } else { %>
|
|
32
|
-
|
|
63
|
+
<p style="color:var(--text-disabled);font-size:0.85rem;margin-bottom:0.5rem;">No summary report generated yet.</p>
|
|
33
64
|
<% } %>
|
|
34
65
|
<% if (run.hasAllure) { %>
|
|
35
|
-
|
|
66
|
+
<a href="/allure-report?project=<%= project.id %>" class="btn" target="_blank" style="background-color:var(--brand-ochre);color:var(--text);border-color:var(--border-strong);margin-top:0.5rem;">Open Allure Report ↗</a>
|
|
36
67
|
<% } %>
|
|
37
68
|
</div>
|
|
38
69
|
</div>
|
|
39
70
|
|
|
40
71
|
<% if (run.healing) { %>
|
|
41
|
-
<div class="card">
|
|
42
|
-
<h3
|
|
43
|
-
<table class="info-table">
|
|
44
|
-
<tr
|
|
45
|
-
|
|
46
|
-
|
|
72
|
+
<div class="card card-lavender">
|
|
73
|
+
<h3>🛠️ Self-Healing Status</h3>
|
|
74
|
+
<table class="info-table" style="margin-bottom:1rem;">
|
|
75
|
+
<tr>
|
|
76
|
+
<td>Attempts</td>
|
|
77
|
+
<td><strong><%= run.healing.healingAttempts ? run.healing.healingAttempts.length : 0 %></strong></td>
|
|
78
|
+
</tr>
|
|
79
|
+
<tr>
|
|
80
|
+
<td>Healed</td>
|
|
81
|
+
<td><strong><%= run.healing.totalHealed || 0 %></strong></td>
|
|
82
|
+
</tr>
|
|
83
|
+
<tr>
|
|
84
|
+
<td>Remaining</td>
|
|
85
|
+
<td><strong><%= run.healing.totalRemaining || 0 %></strong></td>
|
|
86
|
+
</tr>
|
|
47
87
|
</table>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
88
|
+
|
|
89
|
+
<% if (run.healing.healingAttempts && run.healing.healingAttempts.length > 0) { %>
|
|
90
|
+
<h4 style="font-size:0.9rem;margin-top:1rem;margin-bottom:0.5rem;font-weight:600;">Healing Log</h4>
|
|
91
|
+
<% run.healing.healingAttempts.forEach(a => { %>
|
|
92
|
+
<div class="heal-attempt" style="margin-bottom:0.5rem;font-size:0.85rem;">
|
|
93
|
+
<strong>Attempt <%= a.attempt %></strong>: <%= a.healed ? a.healed.length : 0 %> auto-fixed, <%= a.stillFailing ? a.stillFailing.length : 0 %> failing.
|
|
94
|
+
</div>
|
|
95
|
+
<% }) %>
|
|
55
96
|
<% } %>
|
|
56
97
|
</div>
|
|
57
98
|
<% } %>
|
|
58
99
|
</div>
|
|
59
100
|
|
|
101
|
+
<!-- Right Side: Failures, Reports, Output -->
|
|
60
102
|
<div class="col col-70">
|
|
61
103
|
<% if (run.result.failedTests && run.result.failedTests.length > 0) { %>
|
|
62
|
-
<div class="card">
|
|
63
|
-
<h3
|
|
64
|
-
<ul class="fail-list">
|
|
104
|
+
<div class="card card-peach">
|
|
105
|
+
<h3>❌ Failed Tests & Traces</h3>
|
|
106
|
+
<ul class="fail-list" style="padding-left:1.25rem;">
|
|
65
107
|
<% run.result.failedTests.forEach(ft => { %>
|
|
66
|
-
|
|
108
|
+
<li style="margin-bottom:1rem;">
|
|
109
|
+
<strong style="font-family:var(--font-mono);font-size:0.9rem;color:var(--danger);"><%= ft.test || ft.file || 'Test failure' %></strong>
|
|
110
|
+
<% if (ft.error) { %>
|
|
111
|
+
<pre style="margin-top:0.5rem;background:rgba(255,255,255,0.4);border:1px solid rgba(0,0,0,0.1);padding:0.75rem;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:0.78rem;overflow-x:auto;white-space:pre-wrap;color:var(--text);"><%= ft.error %></pre>
|
|
112
|
+
<% } %>
|
|
113
|
+
</li>
|
|
67
114
|
<% }) %>
|
|
68
115
|
</ul>
|
|
69
116
|
</div>
|
|
@@ -71,14 +118,27 @@
|
|
|
71
118
|
|
|
72
119
|
<% if (run.report) { %>
|
|
73
120
|
<div class="card">
|
|
74
|
-
<h3
|
|
75
|
-
<div
|
|
121
|
+
<h3>📝 Test Execution Report</h3>
|
|
122
|
+
<div id="run-report-md" style="display:none;"><%= run.report %></div>
|
|
123
|
+
<div class="markdown-content" id="run-report-rendered"></div>
|
|
76
124
|
</div>
|
|
77
125
|
<% } %>
|
|
78
126
|
|
|
79
127
|
<div class="card">
|
|
80
|
-
<h3
|
|
81
|
-
<pre class="code-block"><%= run.result.output || 'No output captured' %></pre>
|
|
128
|
+
<h3>💻 Raw Execution Console Output</h3>
|
|
129
|
+
<pre class="code-block" style="font-size:0.78rem;max-height:400px;overflow-y:auto;"><%= run.result.output || 'No console output captured.' %></pre>
|
|
82
130
|
</div>
|
|
83
131
|
</div>
|
|
84
132
|
</div>
|
|
133
|
+
|
|
134
|
+
<script>
|
|
135
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
136
|
+
const reportRaw = document.getElementById('run-report-md');
|
|
137
|
+
const reportRendered = document.getElementById('run-report-rendered');
|
|
138
|
+
if (reportRaw && reportRendered && typeof marked !== 'undefined') {
|
|
139
|
+
reportRendered.innerHTML = marked.parse(reportRaw.textContent || '');
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
</script>
|
|
143
|
+
|
|
144
|
+
<% } %>
|
|
@@ -4,61 +4,52 @@
|
|
|
4
4
|
<div class="page-header">
|
|
5
5
|
<h1>Execution Runs</h1>
|
|
6
6
|
<div class="header-actions">
|
|
7
|
-
<span class="badge badge-project"><%= project.name %></span>
|
|
8
|
-
<a href="/analytics?project=<%= project.id %>" class="btn btn-sm">Analytics</a>
|
|
7
|
+
<span class="badge badge-project"><%= (typeof project !== 'undefined' && project && project.name) ? project.name : 'Unknown Project' %></span>
|
|
8
|
+
<a href="/analytics?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-sm">Analytics</a>
|
|
9
9
|
</div>
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
|
-
<% if (runs.length === 0) { %>
|
|
12
|
+
<% if (typeof runs === 'undefined' || !runs || runs.length === 0) { %>
|
|
13
13
|
<div class="empty-state">
|
|
14
|
-
<p>No test executions yet. Run the pipeline from the Stories page.</p>
|
|
15
|
-
<a href="/stories?project=<%= project.id %>" class="btn btn-primary">View Stories</a>
|
|
14
|
+
<p>No test executions yet. Run the pipeline from the Stories page to see executions here.</p>
|
|
15
|
+
<a href="/stories?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-primary" style="margin-top:0.5rem;">View Stories</a>
|
|
16
16
|
</div>
|
|
17
|
-
<% } %>
|
|
17
|
+
<% } else { %>
|
|
18
18
|
|
|
19
|
-
<div class="run-list">
|
|
20
|
-
<% runs.forEach(r => { %>
|
|
21
|
-
<div class="run-card-wrapper <%= r.success ? 'run-passed' : 'run-failed' %>"
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
<div class="run-list" style="display:flex;flex-direction:column;gap:1rem;">
|
|
20
|
+
<% (runs || []).forEach(r => { %>
|
|
21
|
+
<div class="run-card-wrapper <%= r.success ? 'run-passed' : (r.success === null ? 'run-pending' : 'run-failed') %>"
|
|
22
|
+
style="display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-left:6px solid <%= r.success ? 'var(--success)' : (r.success === null ? 'var(--brand-ochre)' : 'var(--danger)') %>;border-radius:var(--radius-lg);padding:1.25rem;transition:transform 0.15s, border-color 0.15s;box-shadow:var(--shadow-1);"
|
|
23
|
+
onmouseover="this.style.transform='translateY(-2px)';this.style.borderColor='var(--border-strong)';"
|
|
24
|
+
onmouseout="this.style.transform='none';this.style.borderColor='var(--border)';">
|
|
25
|
+
|
|
26
|
+
<a href="/runs/<%= r.id %>?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="run-card-main" style="display:flex;align-items:center;gap:1rem;text-decoration:none;color:var(--text);flex:1;">
|
|
27
|
+
<div class="run-icon" style="font-size:1.75rem;"><%= r.success ? '✅' : (r.success === null ? '⏳' : '❌') %></div>
|
|
24
28
|
<div class="run-info">
|
|
25
|
-
<div class="run-name"><%= r.id
|
|
26
|
-
<div class="run-test"><%= r.testName %></div>
|
|
27
|
-
<div class="run-meta">
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
<div class="run-name" style="font-family:var(--font-display);font-weight:600;font-size:1.15rem;letter-spacing:-0.01em;"><%= (r.id || '').substring(0, 24) %>...</div>
|
|
30
|
+
<div class="run-test" style="font-family:var(--font-mono);font-size:0.85rem;color:var(--text-muted);margin:0.2rem 0;"><%= r.testName || 'Unknown Test' %></div>
|
|
31
|
+
<div class="run-meta" style="font-size:0.8rem;color:var(--text-disabled);font-weight:500;">
|
|
32
|
+
Status: <strong><%= r.success ? 'Passed' : (r.success === null ? 'Running / Pending' : 'Failed') %></strong> ·
|
|
33
|
+
Duration: <strong><%= r.duration ? (r.duration / 1000).toFixed(1) + 's' : 'N/A' %></strong> ·
|
|
34
|
+
Errors: <strong><%= typeof r.failedCount !== 'undefined' ? r.failedCount : 0 %></strong> ·
|
|
35
|
+
Healing: <strong><%= (typeof r.healedCount !== 'undefined' && r.healedCount > 0) ? r.healedCount + ' healed' : 'none' %></strong>
|
|
32
36
|
</div>
|
|
33
37
|
</div>
|
|
34
38
|
</a>
|
|
35
|
-
|
|
39
|
+
|
|
40
|
+
<div class="run-actions" style="display:flex;gap:0.5rem;align-items:center;margin-left:1.5rem;">
|
|
36
41
|
<% if (r.hasReport) { %>
|
|
37
|
-
<a href="/export/report/<%= r.id %>?project=<%= project.id %>" class="btn btn-sm btn-primary" target="_blank">
|
|
38
|
-
<a href="/export/pdf/<%= r.id %>?project=<%= project.id %>" class="btn btn-sm">
|
|
42
|
+
<a href="/export/report/<%= r.id %>?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-sm btn-primary" target="_blank">HTML Report</a>
|
|
43
|
+
<a href="/export/pdf/<%= r.id %>?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-sm">Raw TXT</a>
|
|
39
44
|
<% } else { %>
|
|
40
|
-
<span class="run-no-report">⏳ No
|
|
45
|
+
<span class="run-no-report" style="color:var(--text-disabled);font-size:0.8rem;font-weight:500;">⏳ No Report</span>
|
|
41
46
|
<% } %>
|
|
42
47
|
<% if (r.hasAllure) { %>
|
|
43
|
-
<a href="/allure-report?project=<%= project.id %>" class="btn btn-sm" target="_blank">Allure
|
|
48
|
+
<a href="/allure-report?project=<%= (typeof project !== 'undefined' && project) ? project.id : '' %>" class="btn btn-sm" target="_blank" style="background-color:var(--brand-ochre);color:var(--text);border-color:var(--border-strong);">Allure</a>
|
|
44
49
|
<% } %>
|
|
45
50
|
</div>
|
|
46
51
|
</div>
|
|
47
52
|
<% }) %>
|
|
48
53
|
</div>
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
.run-card-wrapper {
|
|
52
|
-
display: flex; align-items: center; gap: 1rem;
|
|
53
|
-
background: var(--surface); border: 1px solid var(--border);
|
|
54
|
-
border-radius: var(--radius); padding: 0.75rem 1.25rem;
|
|
55
|
-
transition: border-color 0.2s;
|
|
56
|
-
}
|
|
57
|
-
.run-card-wrapper:hover { border-color: var(--primary); }
|
|
58
|
-
.run-card-main {
|
|
59
|
-
display: flex; align-items: center; gap: 1rem;
|
|
60
|
-
text-decoration: none; color: var(--text); flex: 1;
|
|
61
|
-
}
|
|
62
|
-
.run-actions { display: flex; gap: 0.5rem; align-items: center; white-space: nowrap; }
|
|
63
|
-
.run-no-report { color: var(--text-muted); font-size: 0.8rem; }
|
|
64
|
-
</style>
|
|
55
|
+
<% } %>
|
|
@@ -6,48 +6,46 @@
|
|
|
6
6
|
<span class="badge badge-project"><%= project.name %></span>
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
|
+
<% if (stories.length === 0) { %>
|
|
10
|
+
<div class="empty-state">
|
|
11
|
+
<div style="font-size: 3rem; margin-bottom: 1rem;">📝</div>
|
|
12
|
+
<h3>Aucune User Story</h3>
|
|
13
|
+
<p>Ajoutez des fichiers Markdown <code>.md</code> dans le dossier <code>user-story/</code> de votre projet pour commencer.</p>
|
|
14
|
+
</div>
|
|
15
|
+
<% } else { %>
|
|
9
16
|
<div class="story-list">
|
|
10
|
-
<%
|
|
11
|
-
|
|
17
|
+
<% const cardColors = ['card-lavender', 'card-peach', 'card-cream']; %>
|
|
18
|
+
<% stories.forEach((s, idx) => { %>
|
|
19
|
+
<div class="story-card <%= cardColors[idx % cardColors.length] %>" style="margin-bottom:1.25rem;">
|
|
12
20
|
<div class="story-header">
|
|
13
|
-
<a href="/stories/<%= s.name %>?project=<%= project.id %>" class="story-title"><%= s.name %></a>
|
|
21
|
+
<a href="/stories/<%= s.name %>?project=<%= project.id %>" class="story-title" style="text-decoration:none;font-weight:600;"><%= s.name %></a>
|
|
14
22
|
<div class="story-badges">
|
|
15
23
|
<% if (s.hasPlan) { %><span class="badge badge-plan">Planned</span><% } %>
|
|
16
24
|
<% if (s.hasSpec) { %><span class="badge badge-spec">Tested</span><% } %>
|
|
17
25
|
<% if (!s.hasPlan) { %><span class="badge badge-draft">Draft</span><% } %>
|
|
18
26
|
</div>
|
|
19
27
|
</div>
|
|
20
|
-
<div class="story-preview">
|
|
28
|
+
<div class="story-preview" style="margin:1rem 0;">
|
|
21
29
|
<% if (s.content) { %>
|
|
22
|
-
<% const lines = s.content.split('\n').filter(l => l.startsWith('##') || l.startsWith('**')) %>
|
|
23
|
-
<% lines.slice(0, 3).forEach(l => {
|
|
30
|
+
<% const lines = s.content.split('\n').filter(l => l.startsWith('##') || l.startsWith('**') || l.startsWith('-') || l.trim().length > 0) %>
|
|
31
|
+
<% lines.slice(0, 3).forEach(l => { %>
|
|
32
|
+
<p style="margin:0.25rem 0;font-size:0.9rem;opacity:0.85;"><%= l.replace(/\*\*|##/g, '').substring(0, 100) %></p>
|
|
33
|
+
<% }) %>
|
|
24
34
|
<% } %>
|
|
25
35
|
</div>
|
|
26
|
-
<div class="story-actions">
|
|
27
|
-
<button class="btn btn-sm" onclick="runPipeline('<%= project.id %>', '<%= s.name %>'
|
|
36
|
+
<div class="story-actions" style="border-top:1px solid var(--border);padding-top:1rem;display:flex;align-items:center;">
|
|
37
|
+
<button class="btn btn-sm btn-primary" onclick="runPipeline('<%= project.id %>', '<%= s.name %>')">▶ Execute Tests</button>
|
|
38
|
+
<a href="/stories/<%= s.name %>?project=<%= project.id %>" class="btn btn-sm" style="margin-left:0.5rem;">View Details</a>
|
|
28
39
|
<span class="story-action-output"></span>
|
|
29
40
|
</div>
|
|
30
41
|
</div>
|
|
31
42
|
<% }) %>
|
|
32
43
|
</div>
|
|
44
|
+
<% } %>
|
|
33
45
|
|
|
34
46
|
<script>
|
|
35
|
-
async function runPipeline(projectId, storyName
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const outputSpan = btn.parentElement.querySelector('.story-action-output');
|
|
39
|
-
|
|
40
|
-
const res = await fetch(`/stories/${encodeURIComponent(storyName)}/full-pipeline?project=${projectId}`, {
|
|
41
|
-
method: 'POST',
|
|
42
|
-
headers: { 'Content-Type': 'application/json' },
|
|
43
|
-
});
|
|
44
|
-
const data = await res.json();
|
|
45
|
-
|
|
46
|
-
outputSpan.textContent = data.success ? '✓ Done' : '✗ Failed';
|
|
47
|
-
outputSpan.className = data.success ? 'output-success' : 'output-error';
|
|
48
|
-
btn.disabled = false;
|
|
49
|
-
btn.textContent = 'Full Pipeline';
|
|
50
|
-
|
|
51
|
-
setTimeout(() => { outputSpan.textContent = ''; }, 5000);
|
|
47
|
+
async function runPipeline(projectId, storyName) {
|
|
48
|
+
// Rediriger vers la page de détail avec l'instruction de lancement automatique
|
|
49
|
+
window.location.href = `/stories/${encodeURIComponent(storyName)}?project=${projectId}&autoRun=true`;
|
|
52
50
|
}
|
|
53
51
|
</script>
|
|
@@ -8,35 +8,45 @@
|
|
|
8
8
|
|
|
9
9
|
<div class="row">
|
|
10
10
|
<div class="col col-40">
|
|
11
|
-
<div class="card">
|
|
12
|
-
<h3
|
|
13
|
-
<div
|
|
11
|
+
<div class="card card-cream">
|
|
12
|
+
<h3>📝 User Story</h3>
|
|
13
|
+
<div id="story-content-md" style="display:none;"><%= story.content %></div>
|
|
14
|
+
<div class="markdown-content" id="story-content-rendered"></div>
|
|
14
15
|
</div>
|
|
15
16
|
|
|
16
17
|
<div class="card">
|
|
17
|
-
<h3
|
|
18
|
+
<h3>⚡ Pipeline Controls</h3>
|
|
19
|
+
<p style="color:var(--text-muted);font-size:0.85rem;margin-bottom:1rem;">Trigger step-by-step or launch the fully automated agentic sequence.</p>
|
|
18
20
|
<div class="action-buttons-vertical">
|
|
19
|
-
<button class="btn btn-sm" onclick="
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
<button class="btn btn-sm btn-primary" onclick="triggerExecute('<%= story.name %>')">▶ Execute Tests</button>
|
|
22
|
+
<a href="/runs?project=<%= project.id %>" class="btn btn-sm" style="margin-top:0.5rem;justify-content:center;">View Test Results →</a>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<!-- Streaming console output box -->
|
|
26
|
+
<div id="pipeline-status" class="output-box" style="display:none;"></div>
|
|
27
|
+
|
|
28
|
+
<!-- Neon loader pulse indicator -->
|
|
29
|
+
<div id="pipeline-pulse" class="terminal-pulse" style="display:none;margin-top:1rem;">
|
|
30
|
+
<span class="pulse-dot"></span>
|
|
31
|
+
<span class="pulse-dot"></span>
|
|
32
|
+
<span class="pulse-dot"></span>
|
|
33
|
+
<span class="pulse-text">AI Agent is running...</span>
|
|
24
34
|
</div>
|
|
25
|
-
<div id="pipeline-status" class="output-box"></div>
|
|
26
35
|
</div>
|
|
27
36
|
</div>
|
|
28
37
|
|
|
29
38
|
<div class="col col-60">
|
|
30
39
|
<% if (story.plan) { %>
|
|
31
40
|
<div class="card">
|
|
32
|
-
<h3
|
|
33
|
-
<div
|
|
41
|
+
<h3>📋 Test Plan <a href="/stories/<%= story.name %>?project=<%= project.id %>&tab=plan" class="btn btn-sm" style="margin-left:auto;">Refresh</a></h3>
|
|
42
|
+
<div id="story-plan-md" style="display:none;"><%= story.plan %></div>
|
|
43
|
+
<div class="markdown-content" id="story-plan-rendered"></div>
|
|
34
44
|
</div>
|
|
35
45
|
<% } %>
|
|
36
46
|
|
|
37
47
|
<% if (story.spec) { %>
|
|
38
48
|
<div class="card">
|
|
39
|
-
<h3
|
|
49
|
+
<h3>🧪 Test Spec: <%= story.specName %></h3>
|
|
40
50
|
<pre class="code-block"><%= story.spec %></pre>
|
|
41
51
|
</div>
|
|
42
52
|
<% } %>
|
|
@@ -44,20 +54,86 @@
|
|
|
44
54
|
</div>
|
|
45
55
|
|
|
46
56
|
<script>
|
|
57
|
+
// Parse Markdown on Client-Side for extremely high-fidelity tables, checkmarks, list layout
|
|
58
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
59
|
+
const contentRaw = document.getElementById('story-content-md');
|
|
60
|
+
const contentRendered = document.getElementById('story-content-rendered');
|
|
61
|
+
if (contentRaw && contentRendered) {
|
|
62
|
+
contentRendered.innerHTML = marked.parse(contentRaw.textContent || '');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const planRaw = document.getElementById('story-plan-md');
|
|
66
|
+
const planRendered = document.getElementById('story-plan-rendered');
|
|
67
|
+
if (planRaw && planRendered) {
|
|
68
|
+
planRendered.innerHTML = marked.parse(planRaw.textContent || '');
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
47
72
|
async function callPipeline(action, storyName) {
|
|
48
73
|
const status = document.getElementById('pipeline-status');
|
|
49
|
-
|
|
74
|
+
const pulse = document.getElementById('pipeline-pulse');
|
|
75
|
+
|
|
76
|
+
// Reset and show containers
|
|
77
|
+
status.style.display = 'block';
|
|
78
|
+
status.textContent = `🚀 Initializing QA agent action [${action}]...\n\n`;
|
|
50
79
|
status.className = 'output-box output-running';
|
|
80
|
+
pulse.style.display = 'flex';
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
const res = await fetch(`/stories/${encodeURIComponent(storyName)}/${action}?project=<%= project.id %>`, { method: 'POST' });
|
|
84
|
+
|
|
85
|
+
if (!res.body) {
|
|
86
|
+
status.textContent += "\nError: The server did not return a readable stream.";
|
|
87
|
+
pulse.style.display = 'none';
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
51
90
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
91
|
+
const reader = res.body.getReader();
|
|
92
|
+
const decoder = new TextDecoder('utf-8');
|
|
93
|
+
|
|
94
|
+
while (true) {
|
|
95
|
+
const { done, value } = await reader.read();
|
|
96
|
+
if (done) break;
|
|
97
|
+
|
|
98
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
99
|
+
status.textContent += chunk;
|
|
100
|
+
status.scrollTop = status.scrollHeight; // Force Autoscroll
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Hide pulse loader once done
|
|
104
|
+
pulse.style.display = 'none';
|
|
105
|
+
|
|
106
|
+
// Parse final status
|
|
107
|
+
const finishedText = status.textContent.toLowerCase();
|
|
108
|
+
if (finishedText.includes('[finished: success]')) {
|
|
109
|
+
status.className = 'output-box output-success';
|
|
110
|
+
// Reload page to reflect new plans/specs in EJS
|
|
111
|
+
setTimeout(() => { location.reload(); }, 2000);
|
|
112
|
+
} else {
|
|
113
|
+
status.className = 'output-box output-error';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
} catch (error) {
|
|
117
|
+
status.textContent += `\n\nNetwork or server connection error: ${error.message}`;
|
|
118
|
+
status.className = 'output-box output-error';
|
|
119
|
+
pulse.style.display = 'none';
|
|
120
|
+
}
|
|
57
121
|
}
|
|
58
122
|
|
|
59
123
|
function triggerPlan(s) { callPipeline('plan', s); }
|
|
60
124
|
function triggerGenerate(s) { callPipeline('generate', s); }
|
|
61
125
|
function triggerExecute(s) { callPipeline('execute', s); }
|
|
62
126
|
function triggerFull(s) { callPipeline('full-pipeline', s); }
|
|
127
|
+
|
|
128
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
129
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
130
|
+
if (urlParams.get('autoRun') === 'true') {
|
|
131
|
+
// Nettoyer l'URL afin qu'un rechargement manuel ne relance pas le processus
|
|
132
|
+
const newUrl = window.location.pathname + '?project=' + urlParams.get('project');
|
|
133
|
+
window.history.replaceState({}, '', newUrl);
|
|
134
|
+
|
|
135
|
+
// Déclencher l'exécution des tests
|
|
136
|
+
triggerExecute('<%= story.name %>');
|
|
137
|
+
}
|
|
138
|
+
});
|
|
63
139
|
</script>
|
|
@@ -19,43 +19,43 @@
|
|
|
19
19
|
|
|
20
20
|
<div class="alerts" id="alert-container"></div>
|
|
21
21
|
|
|
22
|
-
<div class="row">
|
|
23
|
-
<div class="col-40">
|
|
24
|
-
<div class="card">
|
|
25
|
-
<h3
|
|
26
|
-
<p style="color: var(--text-muted); font-size: 0.85rem; margin-bottom:
|
|
27
|
-
Auto-generate realistic
|
|
22
|
+
<div class="row" style="margin-bottom:2rem;">
|
|
23
|
+
<div class="col col-40">
|
|
24
|
+
<div class="card card-lavender">
|
|
25
|
+
<h3>⚡ Generate Test Data</h3>
|
|
26
|
+
<p style="color: var(--text-muted); font-size: 0.85rem; margin-bottom: 1.25rem;">
|
|
27
|
+
Auto-generate realistic synthetic mock datasets for your QA pipeline.
|
|
28
28
|
</p>
|
|
29
|
-
<form id="data-form">
|
|
29
|
+
<form id="data-form" class="form">
|
|
30
30
|
<div class="form-group">
|
|
31
31
|
<label>Data Type</label>
|
|
32
32
|
<select id="data-type" class="form-input">
|
|
33
|
-
<option value="users">Users</option>
|
|
34
|
-
<option value="transactions">Transactions</option>
|
|
33
|
+
<option value="users">Users Accounts</option>
|
|
34
|
+
<option value="transactions">Transactions Logs</option>
|
|
35
35
|
</select>
|
|
36
36
|
</div>
|
|
37
37
|
<div class="form-group">
|
|
38
38
|
<label>Record Count</label>
|
|
39
39
|
<input type="number" id="data-count" class="form-input" value="5" min="1" max="100">
|
|
40
40
|
</div>
|
|
41
|
-
<button type="submit" class="btn btn-primary">Generate</button>
|
|
41
|
+
<button type="submit" class="btn btn-primary" style="width:100%;margin-top:0.5rem;">Generate Dataset</button>
|
|
42
42
|
</form>
|
|
43
|
-
<div id="data-output" class="output-box" style="display:none;"></div>
|
|
43
|
+
<div id="data-output" class="output-box" style="display:none;margin-top:1rem;"></div>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
|
-
<div class="col-60">
|
|
46
|
+
<div class="col col-60">
|
|
47
47
|
<div class="card">
|
|
48
|
-
<h3
|
|
48
|
+
<h3>📂 Generated Data Files</h3>
|
|
49
49
|
<% if (dataFiles.length === 0) { %>
|
|
50
50
|
<div class="empty-state" style="padding:2rem 0;">
|
|
51
51
|
<p>No data files generated yet</p>
|
|
52
52
|
</div>
|
|
53
53
|
<% } else { %>
|
|
54
54
|
<table class="info-table">
|
|
55
|
-
<tr><th>File</th><th>Size</th><th>Modified</th><th
|
|
55
|
+
<tr><th>File Name</th><th>Size</th><th>Last Modified</th><th>Action</th></tr>
|
|
56
56
|
<% dataFiles.sort((a,b) => new Date(b.modified) - new Date(a.modified)).forEach(f => { %>
|
|
57
57
|
<tr>
|
|
58
|
-
<td><code><%= f.name %></code></td>
|
|
58
|
+
<td><code style="font-family:var(--font-mono);font-size:0.8rem;"><%= f.name %></code></td>
|
|
59
59
|
<td><%= f.size > 1024 ? (f.size / 1024).toFixed(1) + ' KB' : f.size + ' B' %></td>
|
|
60
60
|
<td><%= new Date(f.modified).toLocaleString() %></td>
|
|
61
61
|
<td><button class="btn btn-sm btn-danger" onclick="deleteFile('<%= f.name %>')">Delete</button></td>
|
|
@@ -68,14 +68,14 @@
|
|
|
68
68
|
</div>
|
|
69
69
|
|
|
70
70
|
<div class="card">
|
|
71
|
-
<h3
|
|
72
|
-
<p style="color: var(--text-muted); font-size: 0.
|
|
73
|
-
Generated test data is stored in <code>data/</code> as JSON files. These can be:
|
|
71
|
+
<h3>ℹ️ About Test Data Management</h3>
|
|
72
|
+
<p style="color: var(--text-muted); font-size: 0.88rem; line-height:1.5;">
|
|
73
|
+
Generated test data is stored directly in your connected project's <code>data/</code> folder as structured JSON files. These datasets can be easily:
|
|
74
74
|
</p>
|
|
75
|
-
<ul style="color: var(--text-muted); font-size: 0.
|
|
76
|
-
<li>
|
|
77
|
-
<li>
|
|
78
|
-
<li>
|
|
75
|
+
<ul style="color: var(--text-muted); font-size: 0.88rem; padding-left: 1.5rem; margin-top: 0.5rem; line-height:1.6;">
|
|
76
|
+
<li>Read dynamically inside Playwright test scenarios using <code>fs.readFileSync()</code></li>
|
|
77
|
+
<li>Injected directly into a localized sandbox database before test suite runs</li>
|
|
78
|
+
<li>Exported or synced for cross-team quality assurance consistency</li>
|
|
79
79
|
</ul>
|
|
80
80
|
</div>
|
|
81
81
|
|
|
@@ -87,7 +87,7 @@ document.getElementById('data-form').addEventListener('submit', async (e) => {
|
|
|
87
87
|
const output = document.getElementById('data-output');
|
|
88
88
|
|
|
89
89
|
output.style.display = 'block';
|
|
90
|
-
output.textContent = 'Generating...';
|
|
90
|
+
output.textContent = 'Generating realistic mock data...';
|
|
91
91
|
output.className = 'output-box output-running';
|
|
92
92
|
|
|
93
93
|
const res = await fetch('/data/generate', {
|
|
@@ -108,7 +108,7 @@ document.getElementById('data-form').addEventListener('submit', async (e) => {
|
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
async function deleteFile(name) {
|
|
111
|
-
if (!confirm(`
|
|
111
|
+
if (!confirm(`Are you sure you want to delete ${name}?`)) return;
|
|
112
112
|
const res = await fetch('/data/' + encodeURIComponent(name), { method: 'DELETE' });
|
|
113
113
|
const data = await res.json();
|
|
114
114
|
if (data.success) location.reload();
|