- {#each test as { ms, reports, keys }}
-
- {ms}ms
-
- {#each keys ?? [] as key}
- {keycodes[key] ?? key}
- {/each}
-
-
- {@render Layout(new Set(keys))}
- {#each reports ?? [] as report}
-
-
{report.modifiers}
-
- {#each report.keys ?? [] as key}
- {keycodes[key] ?? key}
- {/each}
-
-
- {/each}
-
- {/each}
-
-
-
- {#each test as action, i}
- {@const isActionTick = Array.isArray(action)}
- {@const isActionPress = typeof action === "number" && action >= 0}
- {@const isActionRelease = typeof action === "number" && action < 0}
- {#if isActionTick}
-
- step_over
- {action[0]}ms
-
- {#if action[1]}
-
- {#each Array.from({ length: 8 }) as _, j}
-
{j}
- {/each}
- {#each action[1][1] as key}
-
- {key}
-
- {/each}
-
- {/if}
- {:else if typeof action === "string"}
-
Command: {action}
- {:else if isActionPress}
-
- {:else if isActionRelease}
-
- {:else}
-
Unsupported {action}
- {/if}
- {/each}
-
-
-
diff --git a/src/routes/(app)/e2e/keycodes.json b/src/routes/(app)/e2e/keycodes.json
deleted file mode 100644
index 20407730..00000000
--- a/src/routes/(app)/e2e/keycodes.json
+++ /dev/null
@@ -1,251 +0,0 @@
-[
- "reserved",
- "esc",
- "1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "0",
- "-",
- "=",
- "bksp",
- "tab",
- "q",
- "w",
- "e",
- "r",
- "t",
- "y",
- "u",
- "i",
- "o",
- "p",
- "[",
- "]",
- "enter",
- "lctrl",
- "a",
- "s",
- "d",
- "f",
- "g",
- "h",
- "j",
- "k",
- "l",
- ";",
- "'",
- "`",
- "lshift",
- "\\",
- "z",
- "x",
- "c",
- "v",
- "b",
- "n",
- "m",
- ",",
- ".",
- "/",
- "rshift",
- "kp*",
- "lalt",
- "_",
- "capslock",
- "f1",
- "f2",
- "f3",
- "f4",
- "f5",
- "f6",
- "f7",
- "f8",
- "f9",
- "f10",
- "numlock",
- "scrolllock",
- "kp7",
- "kp8",
- "kp9",
- "kp-",
- "kp4",
- "kp5",
- "kp6",
- "kp+",
- "kp1",
- "kp2",
- "kp3",
- "kp0",
- "kp.",
- "ksc_84",
- "zenkaku_hankaku",
- "102nd",
- "f11",
- "f12",
- "ro",
- "katakana",
- "hiragana",
- "henkan",
- "katakana_hiragana",
- "muhenkan",
- "kp,",
- "kp_enter",
- "rctrl",
- "kp/",
- "sysrq",
- "ralt",
- "linefeed",
- "home",
- "up",
- "pageup",
- "left",
- "right",
- "end",
- "down",
- "pagedown",
- "insert",
- "delete",
- "macro",
- "mute",
- "volume_down",
- "volume_up",
- "power",
- "kp=",
- "kp+-",
- "pause",
- "scale",
- "kp,",
- "hangeul",
- "hanja",
- "yen",
- "lmeta",
- "rmeta",
- "compose",
- "stop",
- "again",
- "props",
- "undo",
- "front",
- "copy",
- "open",
- "paste",
- "find",
- "cut",
- "help",
- "menu",
- "calc",
- "setup",
- "sleep",
- "wakeup",
- "file",
- "sendfile",
- "deletefile",
- "xfer",
- "prog1",
- "prog2",
- "www",
- "msdos",
- "coffee",
- "rotate_display",
- "cyclewindows",
- "mail",
- "bookmarks",
- "computer",
- "back",
- "forward",
- "close_cd",
- "eject_cd",
- "eject_close_cd",
- "next_song",
- "play_pause",
- "prev_song",
- "stop_cd",
- "record",
- "rewind",
- "phone",
- "iso",
- "config",
- "homepage",
- "refresh",
- "exit",
- "move",
- "edit",
- "scroll_up",
- "scroll_down",
- "kp_left_paren",
- "kp_right_paren",
- "new",
- "redo",
- "f13",
- "f14",
- "f15",
- "f16",
- "f17",
- "f18",
- "f19",
- "f20",
- "f21",
- "f22",
- "f23",
- "f24",
- "sc_195",
- "sc_196",
- "sc_197",
- "sc_198",
- "sc_199",
- "play_cd",
- "pause_cd",
- "prog3",
- "prog4",
- "all_applications",
- "suspend",
- "close",
- "play",
- "fastforward",
- "bass_boost",
- "print",
- "hp",
- "camera",
- "sound",
- "question",
- "email",
- "chat",
- "search",
- "connect",
- "finance",
- "sport",
- "shop",
- "alterase",
- "cancel",
- "brightness_down",
- "brightness_up",
- "media",
- "switch_video_mode",
- "kbd_illum_toggle",
- "kbd_illum_down",
- "kbd_illum_up",
- "send",
- "reply",
- "forward_mail",
- "save",
- "documents",
- "battery",
- "bluetooth",
- "wlan",
- "uwb",
- "unknown",
- "video_next",
- "video_prev",
- "brightness_cycle",
- "brightness_auto",
- "display_off",
- "wwan",
- "rfkill",
- "mic_mute"
-]
diff --git a/src/routes/(app)/e2e/replay/+page.svelte b/src/routes/(app)/e2e/replay/+page.svelte
new file mode 100644
index 00000000..68de0d9d
--- /dev/null
+++ b/src/routes/(app)/e2e/replay/+page.svelte
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
Cookbook
+ {#if recipes}
+ {#each recipes as demo, i}
+
+ {/each}
+ {/if}
+
+
+
+
diff --git a/src/routes/(app)/recipes/Demo.svelte b/src/routes/(app)/recipes/Demo.svelte
new file mode 100644
index 00000000..f3f85097
--- /dev/null
+++ b/src/routes/(app)/recipes/Demo.svelte
@@ -0,0 +1,86 @@
+
+
+These are example uses, taken directly from our E2E testing library.
-
-
- {#each Object.entries(tests) as [path, resolver]}
- {#await resolver() then module}
-
- {/await}
- {/each}
-
-
-
diff --git a/src/routes/recipes/Recipe.svelte b/src/routes/recipes/Recipe.svelte
deleted file mode 100644
index 339353a8..00000000
--- a/src/routes/recipes/Recipe.svelte
+++ /dev/null
@@ -1,148 +0,0 @@
-
-
-