@@ -21,7 +21,7 @@ const OLD_INTERNAL_COPY_PATTERN = new RegExp([
2121 "publishes" ,
2222 "coverage" ,
2323 [ "technical " , "object " , "family" ] . join ( "" ) ,
24- "internal" ,
24+ [ "in" , "ternal" ] . join ( "" ) ,
2525 [ "runtime " , "type" ] . join ( "" ) ,
2626] . join ( "|" ) , "i" ) ;
2727const LOW_VALUE_STATUS_CHECK_PATTERN = new RegExp ( [
@@ -128,23 +128,20 @@ test("Objects exposes production copy, setup status, and broad table input", asy
128128 await expect ( page . locator ( "[data-objects-template-catalog]" ) ) . toContainText ( "Scores Points" ) ;
129129 await expect ( page . getByRole ( "heading" , { level : 3 , name : "Object Status" } ) ) . toBeVisible ( ) ;
130130 await expect ( page . locator ( "[aria-label='Object status summary'] th" ) ) . toHaveText ( [
131- "Area " ,
131+ "Object " ,
132132 "Status" ,
133- "Next Step " ,
133+ "Actions " ,
134134 ] ) ;
135- await expect ( page . locator ( "[data-objects-status-summary] tr" ) ) . toHaveCount ( 4 ) ;
135+ await expect ( page . locator ( "[data-objects-status-summary] tr" ) ) . toHaveCount ( 1 ) ;
136136 await expect ( page . locator ( "[data-objects-status-summary] td:first-child" ) ) . toHaveText ( [
137137 "Objects" ,
138- "Graphics" ,
139- "Hitboxes" ,
140- "Events" ,
141138 ] ) ;
142139 await expect ( page . locator ( "[data-objects-status-summary] td:nth-child(2)" ) ) . toHaveText ( [
143140 "Not Configured" ,
144- "Not Configured" ,
145- "Not Configured" ,
146- "Not Configured" ,
147141 ] ) ;
142+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( "Open Hitboxes" ) ;
143+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( "Open Events" ) ;
144+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( "Edit Sprite" ) ;
148145 await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( LOW_VALUE_STATUS_CHECK_PATTERN ) ;
149146 await expect ( page . locator ( "[data-objects-list-table] th" ) ) . toHaveText ( [
150147 "Name" ,
@@ -182,8 +179,13 @@ test("Objects exposes production copy, setup status, and broad table input", asy
182179 await expect ( page . locator ( "[data-objects-output-readiness]" ) ) . toHaveText ( "Complete" ) ;
183180 await expect ( page . locator ( "[data-objects-count]" ) ) . toHaveText ( "3" ) ;
184181 await expect ( page . locator ( "[data-objects-output-count]" ) ) . toHaveText ( "3" ) ;
185- await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "3 Defined" ) ;
186- await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Not Configured" ) ;
182+ await expect ( page . locator ( "[data-objects-status-summary] tr" ) ) . toHaveCount ( 3 ) ;
183+ await expect ( page . locator ( "[data-objects-status-summary] td:first-child" ) ) . toHaveText ( [ "Hero" , "Projectile" , "Wall" ] ) ;
184+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Hitbox" ) ;
185+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Events" ) ;
186+ await expect ( page . locator ( "[data-objects-status-open-hitboxes]" ) ) . toHaveCount ( 3 ) ;
187+ await expect ( page . locator ( "[data-objects-status-open-events]" ) ) . toHaveCount ( 3 ) ;
188+ await expect ( page . locator ( "[data-objects-status-edit-sprite]" ) ) . toHaveCount ( 0 ) ;
187189 await expect ( page . locator ( "[data-objects-validation-overlay]" ) ) . toBeHidden ( ) ;
188190 await expect ( page . locator ( "[data-objects-list] tr" ) ) . toHaveCount ( 3 ) ;
189191 await expect ( page . locator ( "[data-objects-list]" ) ) . toContainText ( "Hero" ) ;
@@ -271,6 +273,10 @@ test("Object Type Catalog selection prefills active table rows", async ({ page }
271273 await expect ( page . locator ( "[data-objects-row-capabilities-preview]" ) ) . toContainText ( "Causes Damage" ) ;
272274 await expect ( page . locator ( "[data-objects-row-capabilities-preview]" ) ) . toContainText ( "Takes Damage" ) ;
273275 await expect ( page . locator ( "[data-objects-row-render-asset-preview]" ) ) . toHaveText ( "Links on save" ) ;
276+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Render Asset" ) ;
277+ await expect ( page . locator ( "[data-objects-status-edit-sprite]" ) ) . toHaveCount ( 0 ) ;
278+ await expect ( page . locator ( "[data-objects-status-open-hitboxes]" ) ) . toHaveCount ( 0 ) ;
279+ await expect ( page . locator ( "[data-objects-status-open-events]" ) ) . toHaveCount ( 0 ) ;
274280
275281 await page . locator ( "[data-objects-template-select]" ) . selectOption ( "Platform" ) ;
276282 await expect ( page . locator ( "[data-objects-log]" ) ) . toHaveText ( "Applied Platform template to the active row." ) ;
@@ -279,9 +285,23 @@ test("Object Type Catalog selection prefills active table rows", async ({ page }
279285 await expect ( page . locator ( "[data-objects-row-render-type]" ) ) . toHaveValue ( "None" ) ;
280286 await expect ( page . locator ( "[data-objects-row-capabilities-preview]" ) ) . toHaveText ( "Can Collide" ) ;
281287 await expect ( page . locator ( "[data-objects-row-render-asset-preview]" ) ) . toHaveText ( "None" ) ;
288+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Not Configured" ) ;
282289
283290 await page . locator ( "[data-objects-template-select]" ) . selectOption ( "Hero" ) ;
284291 await page . locator ( "[data-objects-row-name]" ) . fill ( "Catalog Hero" ) ;
292+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Catalog Hero" ) ;
293+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Render Asset" ) ;
294+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Hitbox" ) ;
295+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Events" ) ;
296+ await expect ( page . locator ( "[data-objects-status-edit-sprite]" ) ) . toHaveCount ( 0 ) ;
297+ await expect ( page . locator ( "[data-objects-status-open-hitboxes]" ) ) . toHaveAttribute (
298+ "href" ,
299+ "/toolbox/hitboxes/index.html?objectKey=catalog-hero&sourceTool=objects"
300+ ) ;
301+ await expect ( page . locator ( "[data-objects-status-open-events]" ) ) . toHaveAttribute (
302+ "href" ,
303+ "/toolbox/events/index.html?objectKey=catalog-hero&sourceTool=objects"
304+ ) ;
285305 await page . locator ( "[data-objects-save-row]" ) . click ( ) ;
286306 await expect ( page . locator ( "[data-objects-log]" ) ) . toContainText ( "Added Catalog Hero." ) ;
287307 await expect ( page . locator ( "[data-objects-log]" ) ) . toContainText ( "Created editable default sprite asset sprite_catalog_hero for Catalog Hero." ) ;
@@ -291,6 +311,13 @@ test("Object Type Catalog selection prefills active table rows", async ({ page }
291311 await expect ( page . locator ( "[data-objects-list]" ) ) . toContainText ( "Can Move" ) ;
292312 await expect ( page . locator ( "[data-objects-list]" ) ) . toContainText ( "Takes Damage" ) ;
293313 await expect ( page . locator ( "[data-objects-output-render-asset]" ) ) . toHaveText ( "sprite_catalog_hero" ) ;
314+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( "Missing Render Asset" ) ;
315+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Hitbox" ) ;
316+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Events" ) ;
317+ await expect ( page . locator ( "[data-objects-status-edit-sprite]" ) ) . toHaveAttribute (
318+ "href" ,
319+ "/toolbox/sprites/index.html?assetKey=sprite_catalog_hero&objectKey=catalog-hero&sourceTool=objects"
320+ ) ;
294321 await expect ( page . locator ( "[data-objects-edit-sprite]" ) ) . toHaveAttribute (
295322 "href" ,
296323 "/toolbox/sprites/index.html?assetKey=sprite_catalog_hero&objectKey=catalog-hero&sourceTool=objects"
@@ -320,7 +347,22 @@ test("Objects table save preserves linked sprite asset create and resolve behavi
320347 await expect ( page . locator ( "[data-objects-log]" ) ) . toContainText ( "Created editable default sprite asset sprite_bolt for Bolt." ) ;
321348 await expect ( page . locator ( "[data-objects-list]" ) ) . toContainText ( "sprite_bolt" ) ;
322349 await expect ( page . locator ( "[data-objects-asset-status]" ) ) . toHaveText ( "1 Linked" ) ;
323- await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "1 Linked" ) ;
350+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Bolt" ) ;
351+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . not . toContainText ( "Missing Render Asset" ) ;
352+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Hitbox" ) ;
353+ await expect ( page . locator ( "[data-objects-status-summary]" ) ) . toContainText ( "Missing Events" ) ;
354+ await expect ( page . locator ( "[data-objects-status-edit-sprite]" ) ) . toHaveAttribute (
355+ "href" ,
356+ "/toolbox/sprites/index.html?assetKey=sprite_bolt&objectKey=bolt&sourceTool=objects"
357+ ) ;
358+ await expect ( page . locator ( "[data-objects-status-open-hitboxes]" ) ) . toHaveAttribute (
359+ "href" ,
360+ "/toolbox/hitboxes/index.html?objectKey=bolt&sourceTool=objects"
361+ ) ;
362+ await expect ( page . locator ( "[data-objects-status-open-events]" ) ) . toHaveAttribute (
363+ "href" ,
364+ "/toolbox/events/index.html?objectKey=bolt&sourceTool=objects"
365+ ) ;
324366 await expect ( page . locator ( "[data-objects-output-render-asset]" ) ) . toHaveText ( "sprite_bolt" ) ;
325367 await expect ( page . locator ( "[data-objects-output-sprite-preview]" ) ) . toContainText ( "sprite_bolt" ) ;
326368 await expect ( page . locator ( "[data-objects-output-sprite-preview]" ) ) . toContainText ( "projects/" ) ;
0 commit comments