refactor: drive share, location and scene controls through product state

This commit is contained in:
Sameh Khamis committed 2026-09-13 05:42:49 -07:00
1 parent 21a0d0c74e
commit 45d97376d0
21 files changed
+606 -96

No files matched your search

+14
View File
@@ -39,6 +39,10 @@ try {
document.getElementById('loading-screen')?.classList.contains('hidden'),
{ timeout: 60000 },
);
await page.evaluate(() => {
window.__qaSceneState = [];
window.__godsEyeView.sceneDirector.subscribe((notification) => window.__qaSceneState.push(notification));
});
await page.click('[data-collapse-target="scene-panel"]');
await page.click('#scene-new-btn');
await page.waitForFunction(
@@ -303,6 +307,13 @@ try {
document.querySelectorAll('#scene-select option').length > 0,
),
);
check('Scene subscriptions include current state and the completed native editing actions', await page.evaluate(() => {
const seen = window.__qaSceneState;
const types = new Set(seen.map(({ change }) => change?.type));
return seen[0].initial && Object.isFrozen(seen[0].state) &&
['scene-created', 'shot-captured', 'shot-renamed', 'shot-updated', 'project-exported', 'project-imported', 'shot-deleted', 'scene-deleted', 'run-event'].every((type) => types.has(type)) &&
seen.filter(({ change }) => change?.shot).every(({ change }) => Object.isFrozen(change.shot));
}));
const teardown = await page.evaluate(async () => {
const director = window.__godsEyeView.sceneDirector;
const controls = director._controls;
@@ -320,6 +331,7 @@ try {
},
});
const stopping = director.destroy();
const notificationsAtStop = window.__qaSceneState.length;
const stoppedSynchronously =
controls.destroyed &&
controls.removers.length === 0 &&
@@ -332,6 +344,7 @@ try {
await director.destroy();
return {
stoppedSynchronously,
stateStopped: window.__qaSceneState.length === notificationsAtStop,
sameProject: director._project === project,
noLateStatus:
document.getElementById('scene-status').textContent === previousStatus,
@@ -346,6 +359,7 @@ try {
'Late import completion cannot replace the disposed project or status',
teardown.sameProject && teardown.noLateStatus,
);
check('Scene subscriptions stop before late imports settle', teardown.stateStopped);
check(
'Scene control interaction produces no uncaught browser errors',
errors.length === 0,