diff --git a/public/flash-walkthrough-poster.svg b/public/flash-walkthrough-poster.svg
new file mode 100644
index 00000000..f4291102
--- /dev/null
+++ b/public/flash-walkthrough-poster.svg
@@ -0,0 +1,18 @@
+
diff --git a/public/flash-walkthrough.mp4 b/public/flash-walkthrough.mp4
new file mode 100644
index 00000000..205f9c91
Binary files /dev/null and b/public/flash-walkthrough.mp4 differ
diff --git a/src/app/App.test.jsx b/src/app/App.test.jsx
index 206de720..a4b3c386 100644
--- a/src/app/App.test.jsx
+++ b/src/app/App.test.jsx
@@ -1,6 +1,6 @@
import { Suspense } from 'react'
import { expect, test } from 'vitest'
-import { render, screen } from '@testing-library/react'
+import { fireEvent, render, screen, within } from '@testing-library/react'
import App from '.'
@@ -8,3 +8,14 @@ test('renders without crashing', () => {
render()
expect(screen.getByText('flash.comma.ai')).toBeInTheDocument()
})
+
+test('opens the walkthrough video without leaving the flash flow', () => {
+ render()
+
+ fireEvent.click(screen.getByRole('button', { name: /watch walkthrough/i }))
+
+ const dialog = screen.getByRole('dialog', { name: /flash walkthrough/i })
+ expect(within(dialog).getByText('Flash walkthrough')).toBeInTheDocument()
+ expect(within(dialog).getByTitle('Flash walkthrough video')).toHaveAttribute('src', '/flash-walkthrough.mp4')
+ expect(screen.getByText('flash.comma.ai')).toBeInTheDocument()
+})
diff --git a/src/app/index.jsx b/src/app/index.jsx
index 9f501fe2..62f5b40a 100644
--- a/src/app/index.jsx
+++ b/src/app/index.jsx
@@ -1,3 +1,4 @@
+import { useState } from 'react'
import Flash from './Flash'
function DiscordIcon({ className }) {
@@ -25,6 +26,7 @@ function CommaIcon({ className }) {
}
export default function App() {
+ const [showWalkthrough, setShowWalkthrough] = useState(false)
const version = import.meta.env.VITE_PUBLIC_GIT_SHA || 'dev'
console.info(`flash.comma.ai version: ${version}`)
return (
@@ -41,11 +43,47 @@ export default function App() {
+
+ {showWalkthrough && (
+
+
+
+
Flash walkthrough
+
+
+
+
+
+ )}
)
}