Skip to content

Commit 3e430a2

Browse files
authored
Merge branch 'main' into fix/auth-popup-error-codes
2 parents 5608b47 + 5782b78 commit 3e430a2

2 files changed

Lines changed: 38 additions & 28 deletions

File tree

apps/website/e2e/events.spec.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,22 +124,42 @@ test.describe('Events page — desktop @smoke', () => {
124124
test('a video slide that ends while hovered advances once the pointer leaves', async ({
125125
page
126126
}) => {
127-
test.skip(
128-
!featuredEvents.some((event) => event.media.type === 'video'),
129-
'needs a featured video slide'
127+
const firstVideoIndex = featuredEvents.findIndex(
128+
(event) => event.media.type === 'video'
130129
)
130+
test.skip(firstVideoIndex < 0, 'needs a featured video slide')
131131

132132
await page.goto(PATH_EN)
133133
const hero = heroSection(page, 'en')
134134
const nextSlide = hero.getByRole('button', {
135135
name: t('events.hero.nextSlide', 'en')
136136
})
137137
await nextSlide.scrollIntoViewIfNeeded()
138+
// Hovering pauses auto-advance, so the carousel only moves on our clicks and
139+
// then holds the video slide once the pointer stays inside.
138140
await nextSlide.hover()
139141

142+
const activeSlide = hero.locator('[aria-hidden="false"]')
143+
144+
// The first featured slide is an image; advance to the first video slide.
145+
// Retry to wait out island hydration, but click only while the active slide
146+
// is not yet the video slide so a slow render never overshoots past it.
147+
const videoSlideTitle = featuredEvents[firstVideoIndex].title.en
148+
await expect(async () => {
149+
const activeLabel = await activeSlide
150+
.locator('a')
151+
.getAttribute('aria-label')
152+
if (activeLabel !== videoSlideTitle) await nextSlide.click()
153+
await expect(activeSlide.locator('a')).toHaveAccessibleName(
154+
videoSlideTitle
155+
)
156+
}).toPass({ timeout: 15_000 })
157+
// Clicking left the button focused; drop that focus so only the hover holds
158+
// the slide, letting the pointer leaving be what releases the advance.
159+
await nextSlide.blur()
160+
140161
// With the pointer inside the carousel, the active video finishes (the
141162
// fixture serves a 0.12s placeholder) and the carousel holds its slide.
142-
const activeSlide = hero.locator('[aria-hidden="false"]')
143163
await expect
144164
.poll(() =>
145165
activeSlide

apps/website/src/data/events.ts

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,6 @@ export function deriveFeaturedEvents(
201201
}))
202202
}
203203

204-
const showdownStreamHref: LocalizedText = {
205-
en: 'https://www.youtube.com/live/VeG1bveKZco',
206-
'zh-CN': 'https://www.youtube.com/live/VeG1bveKZco'
207-
}
208-
209204
// zh-CN copy is a first pass and pending native review.
210205
const events: readonly ComfyEvent[] = [
211206
{
@@ -230,7 +225,15 @@ const events: readonly ComfyEvent[] = [
230225
media: eventImage('livestream-aug-19.jpg', {
231226
en: 'Using Comfy to Go Beyond the Models livestream',
232227
'zh-CN': '善用 Comfy,超越模型本身直播'
233-
})
228+
}),
229+
featured: {
230+
order: 0,
231+
media: eventImage('livestream-aug-19.jpg', {
232+
en: 'Using Comfy to Go Beyond the Models livestream',
233+
'zh-CN': '善用 Comfy,超越模型本身直播'
234+
}),
235+
showTitle: false
236+
}
234237
},
235238
{
236239
id: 'future-ai-post-production',
@@ -277,25 +280,12 @@ const events: readonly ComfyEvent[] = [
277280
'zh-CN': 'Purz 与 Allyson 现场对决开源与付费 AI 视频模型,实测效果对比。'
278281
},
279282
location: { en: 'Online', 'zh-CN': '线上' },
280-
dateLabel: {
281-
en: 'August 12, 2026 · 10AM PT',
282-
'zh-CN': '2026年8月12日 · 上午10点(PT)'
283-
},
283+
media: eventImage('august-12-livestream_v2.png', {
284+
en: 'Video Model Showdown livestream recording',
285+
'zh-CN': '视频模型对决直播回放'
286+
}),
284287
startDateTime: '2026-08-12T10:00:00-07:00',
285-
link: { href: showdownStreamHref, newTab: true },
286-
liveVideoId: 'VeG1bveKZco',
287-
featured: {
288-
order: 3,
289-
media: eventVideo(
290-
'august-12-livestream.mp4',
291-
{
292-
en: 'Video Model Showdown livestream',
293-
'zh-CN': '视频模型对决直播'
294-
},
295-
'august-12-livestream.jpg'
296-
),
297-
autoplayMs: 5000
298-
}
288+
recordingVideoId: 'VeG1bveKZco'
299289
},
300290
{
301291
id: 'comfy-creatives-model-jam',

0 commit comments

Comments
 (0)