Skip to content

Commit f6f3016

Browse files
serpentbladeclaude
andcommitted
test(17): wire PartCardConsumer into the VR render harness
The ::part VR cell was registered in matrix.spec.ts but the render harness (main.ts EXAMPLES + the per-target entry.*.ts import.meta.glob brace-lists) did not know the example, so parseQuery() fell back to Counter and the [part="body"] settle locator never appeared (all 6 cells timed out in the baseline run). Register PartCardConsumer in main.ts (EXAMPLES + LIT_TAGS rozie-part-card-consumer + DEFAULT_PROPS {}) and add PartCard,PartCardConsumer to all 6 entry globs (matches the ThemedButtonConsumer multi-rozie precedent). Verified: all 6 target sub-builds now bundle PartCardConsumer (+ PartCard sibling via <components>). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent c148732 commit f6f3016

7 files changed

Lines changed: 21 additions & 6 deletions

File tree

tests/visual-regression/host/entry.angular.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { createComponent, type Type } from '@angular/core';
1717
import { parseQuery, mountWrapper, DEFAULT_PROPS } from './main';
1818

1919
// Two glob roots — see entry.vue.ts for rationale; demos/ wins over root.
20-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
20+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
2121
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
2222

2323
/**

tests/visual-regression/host/entry.lit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import { parseQuery, mountWrapper, LIT_TAGS, DEFAULT_PROPS } from './main';
1414

1515
// Two glob roots — see entry.vue.ts for rationale; demos/ wins over root.
16-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
16+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
1717
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
1818

1919
async function main(): Promise<void> {

tests/visual-regression/host/entry.react.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { parseQuery, mountWrapper, DEFAULT_PROPS, toUncontrolledProps } from './
1818
// canonical for visual-regression purposes (e.g. demos/Dropdown.rozie fills
1919
// the default panel slot so the screenshot captures menu items instead of
2020
// an empty 1×18 box). When both globs match, the demos/ entry wins.
21-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
21+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
2222
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
2323

2424
async function main(): Promise<void> {

tests/visual-regression/host/entry.solid.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { render } from 'solid-js/web';
1010
import { parseQuery, mountWrapper, DEFAULT_PROPS, toUncontrolledProps } from './main';
1111

1212
// Two glob roots — see entry.vue.ts for rationale; demos/ wins over root.
13-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
13+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
1414
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
1515

1616
async function main(): Promise<void> {

tests/visual-regression/host/entry.svelte.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { mount } from 'svelte';
1010
import { parseQuery, mountWrapper, DEFAULT_PROPS } from './main';
1111

1212
// Two glob roots — see entry.vue.ts for rationale; demos/ wins over root.
13-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
13+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
1414
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
1515

1616
async function main(): Promise<void> {

tests/visual-regression/host/entry.vue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { parseQuery, mountWrapper, DEFAULT_PROPS } from './main';
2222
// compile gate (engine-examples.compile.test.ts) but NOT in the
2323
// visual-regression matrix. When BOTH globs match (demos/ vs base), the
2424
// demos/ entry wins per the loader below.
25-
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe}.rozie');
25+
const baseModules = import.meta.glob('../../../examples/{Counter,SearchInput,Dropdown,TodoList,Modal,TreeNode,Card,CardHeader,ModalConsumer,WrapperModal,PortalList,PortalListStyled,FullCalendar,LineChart,CodeMirror,ThemedButton,ThemedButtonManual,ThemedButtonListenersManual,ThemedButtonAllManual,ThemedButtonConsumer,ROnProbe,PartCard,PartCardConsumer}.rozie');
2626
const demoModules = import.meta.glob('../../../examples/demos/*.rozie');
2727

2828
async function main(): Promise<void> {

tests/visual-regression/host/main.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ export const EXAMPLES = [
125125
'ThemedButtonListenersManual',
126126
'ThemedButtonAllManual',
127127
'ROnProbe',
128+
// Phase 17 — PartCardConsumer is the `::part()` cross-shadow-DOM dogfood.
129+
// A multi-rozie consumer (precedent: ThemedButtonConsumer) that embeds
130+
// <PartCard> via a <components> block and styles the child's `part="body"`
131+
// shadow element across the boundary with a `PartCard::part(body)` rule.
132+
// Base example — loader resolves directly to examples/PartCardConsumer.rozie
133+
// (no demo sibling); its <components> import of PartCard.rozie is resolved
134+
// by the unplugin at build time. On Lit the styled effect is visible across
135+
// the shadow boundary; on the 5 non-Lit targets the rule is a no-op.
136+
'PartCardConsumer',
128137
] as const;
129138

130139
export type Example = (typeof EXAMPLES)[number];
@@ -179,6 +188,8 @@ export const LIT_TAGS: Record<Example, string> = {
179188
ThemedButtonListenersManual: 'rozie-themed-button-listeners-manual',
180189
ThemedButtonAllManual: 'rozie-themed-button-all-manual',
181190
ROnProbe: 'rozie-r-on-probe',
191+
// Phase 17 — base example, loader resolves examples/PartCardConsumer.rozie.
192+
PartCardConsumer: 'rozie-part-card-consumer',
182193
};
183194

184195
export interface HostQuery {
@@ -266,6 +277,10 @@ export const DEFAULT_PROPS: Record<Example, Record<string, unknown>> = {
266277
ThemedButtonListenersManual: { label: 'Listeners Manual' },
267278
ThemedButtonAllManual: { label: 'All Manual' },
268279
ROnProbe: {},
280+
// PartCardConsumer is self-contained — its template hardcodes
281+
// `<PartCard :title="'Hello'">` and styles it via `PartCard::part(body)`.
282+
// No parent-side props needed.
283+
PartCardConsumer: {},
269284
};
270285

271286
/**

0 commit comments

Comments
 (0)