Some checks failed
Main Confidence / confidence (push) Failing after 45s
## Summary - introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries - apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces - expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions) - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions) Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #253
138 lines
4.2 KiB
Plaintext
138 lines
4.2 KiB
Plaintext
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var screencast_exports = {};
|
|
__export(screencast_exports, {
|
|
Screencast: () => Screencast
|
|
});
|
|
module.exports = __toCommonJS(screencast_exports);
|
|
var import_utils = require("../utils");
|
|
var import_utils2 = require("../utils");
|
|
class Screencast {
|
|
constructor(page) {
|
|
this._clients = /* @__PURE__ */ new Set();
|
|
this.page = page;
|
|
this.page.instrumentation.addListener(this, page.browserContext);
|
|
}
|
|
async handlePageOrContextClose() {
|
|
const clients = [...this._clients];
|
|
this._clients.clear();
|
|
for (const client of clients) {
|
|
if (client.gracefulClose)
|
|
await client.gracefulClose();
|
|
}
|
|
}
|
|
dispose() {
|
|
for (const client of this._clients)
|
|
client.dispose();
|
|
this._clients.clear();
|
|
this.page.instrumentation.removeListener(this);
|
|
}
|
|
showActions(options) {
|
|
this._actions = options;
|
|
}
|
|
hideActions() {
|
|
this._actions = void 0;
|
|
}
|
|
addClient(client) {
|
|
this._clients.add(client);
|
|
if (this._clients.size === 1)
|
|
this._startScreencast(client.size, client.quality);
|
|
return { size: this._size };
|
|
}
|
|
removeClient(client) {
|
|
if (!this._clients.has(client))
|
|
return;
|
|
this._clients.delete(client);
|
|
if (!this._clients.size)
|
|
this._stopScreencast();
|
|
}
|
|
size() {
|
|
return this._size;
|
|
}
|
|
_startScreencast(size, quality) {
|
|
this._size = size;
|
|
if (!this._size) {
|
|
const viewport = this.page.browserContext._options.viewport || { width: 800, height: 600 };
|
|
const scale = Math.min(1, 800 / Math.max(viewport.width, viewport.height));
|
|
this._size = {
|
|
width: Math.floor(viewport.width * scale),
|
|
height: Math.floor(viewport.height * scale)
|
|
};
|
|
}
|
|
this._size = {
|
|
width: this._size.width & ~1,
|
|
height: this._size.height & ~1
|
|
};
|
|
this.page.delegate.startScreencast({
|
|
width: this._size.width,
|
|
height: this._size.height,
|
|
quality: quality ?? 90
|
|
});
|
|
}
|
|
_stopScreencast() {
|
|
this.page.delegate.stopScreencast();
|
|
}
|
|
onScreencastFrame(frame, ack) {
|
|
const asyncResults = [];
|
|
for (const client of this._clients) {
|
|
const result = client.onFrame(frame);
|
|
if (result)
|
|
asyncResults.push(result);
|
|
}
|
|
if (ack) {
|
|
if (!asyncResults.length)
|
|
ack();
|
|
else
|
|
Promise.race(asyncResults).then(ack);
|
|
}
|
|
}
|
|
async onBeforeCall(sdkObject, metadata, parentId) {
|
|
if (!this._actions)
|
|
return;
|
|
metadata.annotate = true;
|
|
}
|
|
async onBeforeInputAction(sdkObject, metadata) {
|
|
if (!this._actions)
|
|
return;
|
|
const page = sdkObject.attribution.page;
|
|
if (!page)
|
|
return;
|
|
const actionTitle = (0, import_utils.renderTitleForCall)(metadata);
|
|
const utility = await page.mainFrame()._utilityContext();
|
|
await utility.evaluate(async (options) => {
|
|
const { injected, duration } = options;
|
|
injected.setScreencastAnnotation(options);
|
|
await new Promise((f) => injected.utils.builtins.setTimeout(f, duration));
|
|
injected.setScreencastAnnotation(null);
|
|
}, {
|
|
injected: await utility.injectedScript(),
|
|
duration: this._actions?.duration ?? 500,
|
|
point: metadata.point,
|
|
box: metadata.box,
|
|
actionTitle,
|
|
position: this._actions?.position,
|
|
fontSize: this._actions?.fontSize
|
|
}).catch((e) => import_utils2.debugLogger.log("error", e));
|
|
}
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
Screencast
|
|
});
|