Skip to content

Commit 49d1ce3

Browse files
feat(preview): split base/user iframe styles. (#127)
1 parent ed0e1f7 commit 49d1ce3

4 files changed

Lines changed: 445 additions & 36 deletions

File tree

playwright/layout-panels.spec.ts

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,24 +69,55 @@ test('changing preview background keeps applied preview styles', async ({ page }
6969

7070
await expect(previewFrameRoot).toHaveCount(1)
7171
const hasComponentStylesBefore = await previewFrameRoot.evaluate(() => {
72-
const styleElement = document.getElementById('knighted-preview-styles')
73-
if (!(styleElement instanceof HTMLStyleElement)) {
72+
const baseStyleElement = document.getElementById('knighted-preview-base-styles')
73+
const userStyleElement = document.getElementById('knighted-preview-user-styles')
74+
if (
75+
!(baseStyleElement instanceof HTMLStyleElement) ||
76+
!(userStyleElement instanceof HTMLStyleElement)
77+
) {
7478
return false
7579
}
7680

77-
return styleElement.textContent?.includes('.counter-button') ?? false
81+
const baseContainsReset =
82+
baseStyleElement.textContent?.includes('box-sizing: inherit;')
83+
const userContainsComponentStyles =
84+
userStyleElement.textContent?.includes('.counter-button')
85+
const styleElements = Array.from(document.head.querySelectorAll('style'))
86+
const baseIndex = styleElements.indexOf(baseStyleElement)
87+
const userIndex = styleElements.indexOf(userStyleElement)
88+
89+
return Boolean(
90+
baseContainsReset &&
91+
userContainsComponentStyles &&
92+
baseIndex >= 0 &&
93+
userIndex >= 0 &&
94+
baseIndex < userIndex,
95+
)
7896
})
7997
expect(hasComponentStylesBefore).toBe(true)
8098

8199
await page.getByLabel('Background').fill('#b1aaaa')
82100

83101
const hasComponentStylesAfter = await previewFrameRoot.evaluate(() => {
84-
const styleElement = document.getElementById('knighted-preview-styles')
85-
if (!(styleElement instanceof HTMLStyleElement)) {
102+
const baseStyleElements = document.querySelectorAll('#knighted-preview-base-styles')
103+
const userStyleElements = document.querySelectorAll('#knighted-preview-user-styles')
104+
if (baseStyleElements.length !== 1 || userStyleElements.length !== 1) {
86105
return false
87106
}
88107

89-
return styleElement.textContent?.includes('.counter-button') ?? false
108+
const baseStyleElement = baseStyleElements[0]
109+
const userStyleElement = userStyleElements[0]
110+
if (
111+
!(baseStyleElement instanceof HTMLStyleElement) ||
112+
!(userStyleElement instanceof HTMLStyleElement)
113+
) {
114+
return false
115+
}
116+
117+
return (
118+
(baseStyleElement.textContent?.includes('box-sizing: inherit;') ?? false) &&
119+
(userStyleElement.textContent?.includes('.counter-button') ?? false)
120+
)
90121
})
91122
expect(hasComponentStylesAfter).toBe(true)
92123

0 commit comments

Comments
 (0)