用例審閱 · 20261104-152528-editor-quick-edit 待確認

Editor Quick Edit 步驟編輯

完整流程共 8 個階段,下圖標出每個階段的產出與目前進度。用例設計的展開方式列在它下方:先用測試矩陣、狀態機與互動原型系統化展開,再寫成 BDD 情境,最後交給獨立評審打分。

覆蓋摘要

由設計產物自動計算。

37情境
24P0/P1 情境
8/8高風險已覆蓋
32/34矩陣列有情境
14狀態轉換
0人工驗收

驗收範圍

這次要驗收的內容與資料來源。

  • text使用者對話
  • dochttps://deephow.com/platform/youtubification-of-operational-knowledge
  • dochttps://deephow.com/product-tour(Knowledge thru Video 第 18 步截圖)
  • codeapp/views/editor-panels.js(quickEdit、reflow)
  • codeapp/views/editor.js(change、undo/redo、timelineHtml、erase、eraseStep、Save、Discard、leave)
  • codeapp/views/player.js(stepAt、updateOverlay)

風險與覆蓋

P0 與 P1 必須被情境覆蓋,或寫明延後的理由。

  • R-1P0刪除、移動、拆分、合併步驟後,翻譯與註記沒有跟著調整,內容對錯步驟translations[lang].steps 以陣列索引對應原步驟;刪除第 2 步後,西文第 2 步仍是舊的「Entrar a la lista」,學員看到的翻譯與畫面錯位。annotations 以絕對秒數記錄,Erase 前段後註記仍停在原秒數,提示出現在錯誤步驟,甚至超出影片長度。TC-23 TC-24 TC-25已覆蓋
  • R-2P1時間軸選取的步驟在結構變更後失效,Erase Video 刪錯步驟或整頁出錯ui.selectedStep 為索引,刪除/移動/合併後不會重設:先選第 7 步再刪掉任一步,Erase Video 仍可按,讀 steps[6] 為 undefined → step.title 丟 TypeError;移動後則會刪到另一個步驟的片段(不可逆的內容遺失,需靠 Undo)。TC-20 TC-21 TC-22已覆蓋
  • R-3P1改完步驟標題或逐字稿直接按 Save,修改沒存到標題在 change、逐字稿在 blur 時才寫入草稿並整頁重繪;按 Save 的 mousedown 先觸發 blur → 重繪換掉 Save 按鈕 → click 失效。作者以為已存,實際未存。TC-8已覆蓋
  • R-4P1步驟時間表算錯:起始時間不連續、總長與各步加總不一致、出現 0 秒步驟播放器以 start 判定目前步驟、以 duration 畫分段進度條。拆分 1 秒步驟會得到 1 秒 + 0 秒;0 秒步驟在播放器永遠不會被判定為目前步驟、點了也跳到下一步。TC-9 TC-11 TC-14 TC-15 TC-17 TC-35已覆蓋
  • R-5P1Undo / Redo 與 Save、Discard、切換工具的互動錯誤Save 後 past 不清空,Undo 可回到儲存前並讓 Save 再亮起;Discard 清空歷史;新操作後 Redo 應清空。錯誤時作者會誤刪或誤復原步驟。TC-26 TC-27 TC-28 TC-29 TC-32 TC-33 TC-34已覆蓋
  • R-6P1拆分、合併時逐字稿、標題、附件歸屬錯誤拆分:附件只留在前半、後半標題加 (2);合併:保留前一步標題,後一步標題消失、附件合併。歸屬錯誤會讓學員在錯的步驟看到 SOP 文件。TC-11 TC-12 TC-13 TC-15 TC-16已覆蓋
  • R-7P1刪除步驟與 Erase Video 的保護:最後一步、取消確認、不可逆只剩 1 步時必須拒絕;取消確認不得改動;刪除後總長縮短、後續步驟起點前移。TC-17 TC-18 TC-19 TC-21 TC-26已覆蓋
  • R-8P2步驟標題與逐字稿輸入邊界標題清空需還原並提示;80 字上限;HTML 字元需以純文字顯示;逐字稿清空會刪除該行,全部清空後步驟沒有字幕;Enter 不應插入換行。TC-2 TC-3 TC-4 TC-6 TC-7已覆蓋
  • R-9P2上移/下移在頭尾的邊界與重排後的定位第一步上移、最後一步下移必須停用;重排後縮圖編號、時間軸、播放器順序要一致。TC-9 TC-10已覆蓋
  • R-10P1保存後播放器呈現與 Editor 不一致學員端以保存後的 steps 顯示步驟清單、字卡、字幕與總時長;未保存的草稿不應外洩到播放器。TC-1 TC-5 TC-30 TC-31 TC-35已覆蓋
  • R-11P3時間軸縮放與點擊定位縮放 1–4 超出範圍、點擊定位超出影片長度、播放頭位置錯誤,造成選錯位置。TC-36 TC-37已覆蓋

測試設計技法

12 種技法逐一判定;不適用必須寫出理由。

等價類劃分

equivalence

TC-1 TC-2 TC-4 TC-5 TC-6 TC-7

邊界值分析

boundary

TC-3 TC-10 TC-16 TC-19 TC-12 TC-14 TC-37

決策表

decision-table

TC-9 TC-11 TC-13 TC-15 TC-17 TC-18 TC-21

正向/負向/例外路徑

path

TC-1 TC-2 TC-8 TC-17 TC-18 TC-22 TC-30 TC-31

狀態轉換

state-transition

TC-26 TC-27 TC-28 TC-29 TC-33 TC-34 TC-32

角色與權限

role-permission · 不適用

clone 只有一位已登入的作者 Amy Clark,無角色切換;權限列於 context.outOfScope

資料生命週期

data-lifecycle

TC-11 TC-30 TC-23 TC-24 TC-25

成對組合

pairwise · 不適用

結構操作(4 種)與連動資料(翻譯、註記、附件)的組合已以 M-3、M-5 逐一展開,互相獨立的因子不足 3 個

錯誤猜測

error-guessing

TC-8 TC-22 TC-14 TC-34

併發與重複操作

concurrency · 不適用

單一作者在單一分頁編輯,所有操作同步完成、沒有背景工作;編輯與 Save 的事件競態已以 error-guessing 的「直接按儲存」覆蓋

外部依賴失效

dependency-failure · 不適用

Quick Edit 的所有操作都在瀏覽器記憶體與 localStorage 內完成,不呼叫外部服務

環境與設定差異

environment · 不適用

沒有 feature flag 或方案差異;New Editor BETA 只影響上傳偏好,clone 的 Editor 行為相同

評審

依評分標準逐項打分;點開每個維度可以看到核對了什麼、為什麼扣分。

94/100

及格門檻 85 分 · 共 1 輪評審

  • 風險覆蓋19/20

    核對了什麼

    • R-1(P0) → TC-23、TC-24、TC-25(integration)
    • R-2 → TC-22(error)、TC-20(negative)
    • R-3 → TC-8(regression)
    • R-4 → TC-14(boundary)
    • R-5 → TC-26~TC-34(state)
    • R-6、R-7、R-10 皆有 negative 或 boundary 情境

    扣分

    • −1 R-9 只有 TC-9 與 TC-10,未驗證移動後播放器順序
  • 技法與矩陣18/20

    核對了什麼

    • M-2 boundary:標題 81 字、首尾位置、步驟數 1、行數 1、1 秒、縮放越界
    • M-3 decision-table 6 種結構操作
    • concurrency、dependency-failure、role-permission、pairwise、environment 的 N/A 理由已核對

    扣分

    • −2 M-5 移動步驟時註記是否跟著移動以 skipReason 未測,依賴影片是否重排的需求
  • 狀態機10/10

    核對了什麼

    • 4 個狀態(已儲存、有未儲存變更、已復原、已離開 Editor)對應 editor.js 的 draft/saved/past/future
    • 14 條轉換皆有情境,含 3 條非法轉換(例:只剩一步時刪除 → TC-19)
  • 預期可判定14/15

    核對了什麼

    • TC-17 以「總長減少原第 3 步時長」與「Pull Emergency Stop」判定
    • TC-35 以步驟字卡「06 Disable Scissor Lift Power」判定
    • TC-23 以西文「Asegure la cadena」判定

    扣分

    • −1 TC-22 「頁面沒有錯誤」需靠主控台或錯誤監聽判定,PM 不易直接觀察
  • 依據真實9/10

    核對了什麼

    • TC-11、TC-15 規則對照 editor-panels.js 的 split / merge
    • TC-19 提示文字對照程式中的 A Smart Video needs at least one step
    • R-1 預期行為、M-5 未測列已列入 openQuestions

    扣分

    • −1 R-1 翻譯與註記「應跟著同步」是推定的正確行為,現行程式沒有實作,需 PM 確認
  • BDD 品質14/15

    核對了什麼

    • qe-structure.feature 等 4 檔皆有作為/我想要/以便
    • @smoke 只在 TC-1、TC-9、TC-26、TC-30
    • @邊界 只用於 TC-3、TC-14、TC-19、TC-22 等臨界情境

    扣分

    • −1 TC-27 When 一句含三個操作加連按復原,偏命令式
  • 精簡與原型10/10

    核對了什麼

    • prototype 3 個畫面涵蓋 Quick Edit、Translations、播放器
    • prototype 37 個情境以腳本逐一播放,終態與 Then 一致
    • M-2 與 M-3 沒有重複情境
  • [風險覆蓋] R-9 可補「移動後播放器順序」情境
  • [預期可判定] TC-22 的「頁面沒有錯誤」在腳本以 pageerror 監聽判定
  • [技法] M-5 移動步驟時註記的行為待 PM 回覆
  • [BDD] TC-27 可封裝成「我做了三個修改後全部復原」

待釐清

需要需求方回答的問題,會影響預期結果。

  • 移動/刪除後影片是否應重排或剪輯(context assumptions)
  • 1 秒步驟拆分規則
  • 逐字稿可否為 0 行
  • Save 後是否保留 Undo 歷史
  • Undo 歷史上限 50 步
  • 移動步驟時註記是否跟著移動(M-5 未測列)

檢查提醒

不會擋下流程,但值得確認。

  • P0 風險 R-1 只有正向用例,建議補負向/邊界/例外情境

每一列是一個要驗證的條件組合。有對應情境的列會標出情境編號;不測的列必須寫明理由。

步驟標題與逐字稿輸入

M-1 · 等價類劃分 · 6 / 6 列有情境
欄位輸入類別預期情境
標題一般文字三處同步新標題TC-1
標題空白還原並提示TC-2
標題HTML 字元純文字TC-4
逐字稿一般文字保留新文字、行數不變TC-5
逐字稿空白刪除該行TC-6
逐字稿Enter結束編輯不加行TC-7

數量與位置邊界

M-2 · 邊界值分析 · 7 / 8 列有情境

標題長度 80 測 81;步驟位置測首、尾;步驟數下限 1;時長下限 1 秒;縮放 1–4 測越界

門檻測值預期情境
標題上限 8081 字保留 80TC-3
標題上限 8080 字—不測80 字為 81 字截斷後的結果,同一情境已驗證
位置:第 1 步上移停用TC-10
位置:最後一步下移/合併停用TC-10 TC-16
步驟數下限 1刪除唯一步驟拒絕並提示TC-19
逐字稿行數下限 2 才可拆1 行停用TC-12
步驟時長 1 秒拆分不得出現 0 秒TC-14
縮放 1–4連按 5 次停在 4 / 1TC-37

結構操作的結果(決策表)

M-3 · 決策表 · 6 / 6 列有情境
操作前置條件步驟數標題逐字稿時長附件情境
下移非最後一步不變交換跟著步驟起點重算跟著步驟TC-9
拆分≥2 行+1後半加 (2)對半對半、總和不變留前半TC-11 TC-13
合併非最後一步−1保留前一步前後相接相加合併TC-15
刪除≥2 步、確認−1——總長縮短、後續前移—TC-17
刪除取消確認不變————TC-18
Erase Video已選取步驟−1——同刪除—TC-21

正向/負向/例外路徑

M-4 · 正向/負向/例外路徑 · 3 / 3 列有情境
動作正向負向例外情境
編輯標題同步新標題清空被擋編輯後直接 SaveTC-1 TC-2 TC-8
刪除步驟刪除並重算取消/只剩一步選取失效後 EraseTC-17 TC-18 TC-19 TC-22
儲存學員端更新未存不外洩—TC-30 TC-31

步驟資料生命週期與連動資料

M-5 · 資料生命週期 · 6 / 7 列有情境
動作連動資料預期情境
新增(拆分)逐字稿、附件正確歸屬TC-11 TC-13
讀取(播放器)保存後的步驟清單、字卡、起點一致TC-30 TC-35
修改(標題、逐字稿)縮圖、時間軸同步TC-1 TC-5
刪除翻譯對應步驟一起移除TC-23
移動翻譯順序同步TC-24
刪除註記秒數跟著前移TC-25
移動註記—不測clone 移動不重排影片片段,註記秒數不應變動;待 openQuestions 決定影片是否重排後再補

錯誤猜測

M-6 · 錯誤猜測 · 4 / 4 列有情境
情況預期情境
編輯後立刻按 Save(blur 與重繪競態)一次存檔TC-8
選取索引在結構改變後失效不出錯、不刪錯TC-22
1 秒步驟拆成 0 秒不產生 0 秒步驟TC-14
Save 後 Undo回到儲存前並變未存TC-34

功能中的狀態與轉換。允許的轉換都要有情境走過;系統必須阻擋的轉換也要有負向情境驗證。

Quick Edit 草稿(draft / saved / 復原歷史)

只畫出允許的轉換。

flowchart LR
  start(("·")):::start
  s0("已儲存(無變更)")
  s1("有未儲存變更")
  s2("已復原(可重做)")
  s3("已離開 Editor")
  start --> s0
  s0 -->|"編輯標題/逐字稿、移動、拆分、合併、刪除、Erase"| s1
  s0 -->|"取消刪除確認"| s0
  s1 -->|"復原"| s2
  s2 -->|"重做"| s1
  s2 -->|"復原後做新操作(重做清空)"| s1
  s1 -->|"Save"| s0
  s1 -->|"Discard changes"| s0
  s0 -->|"儲存後按復原"| s1
  s1 -->|"離開時選擇留下"| s1
  s1 -->|"離開並放棄變更"| s3
  s0 -->|"無變更時離開"| s3
  classDef start fill:#16191a,stroke:#16191a

轉換表

允許與應被阻擋的轉換。

從觸發條件到結果情境
已儲存(無變更)編輯標題/逐字稿、移動、拆分、合併、刪除、Erase有未儲存變更允許TC-1 TC-9 TC-11 TC-15 TC-17 TC-21
已儲存(無變更)取消刪除確認已儲存(無變更)允許TC-18
有未儲存變更復原已復原(可重做)允許TC-26 TC-27
已復原(可重做)重做有未儲存變更允許TC-26
已復原(可重做)復原後做新操作(重做清空)有未儲存變更允許TC-28
有未儲存變更Save已儲存(無變更)允許TC-30 TC-8
有未儲存變更Discard changes已儲存(無變更)允許TC-33
已儲存(無變更)儲存後按復原有未儲存變更允許TC-34
有未儲存變更離開時選擇留下有未儲存變更允許TC-32
有未儲存變更離開並放棄變更已離開 Editor允許TC-31
已儲存(無變更)無變更時離開已離開 Editor允許TC-35
已儲存(無變更)未修改時按復原/重做—阻擋 · 沒有歷史,按鈕停用TC-29
有未儲存變更只剩一步時刪除—阻擋 · 至少保留一步TC-19
已儲存(無變更)未選取步驟按 Erase Video—阻擋 · 按鈕停用TC-20

在左側點選情境,右側會自動示範該情境的操作與結果;也可以直接在畫面上點擊、輸入,自由走一遍流程。 在新分頁開啟原型 ↗

給 PM 與 RD 對齊的 user story 驗收:主要正向、負向,以及需要 PM 決定的異常與高價值邊界。完整測試範圍見 QA 驗收清單。

TC-1

修正步驟標題後各處同步

正向P0

情境說明

  • 作者修正 AI 取的步驟名稱

預期結果

  • 步驟清單與時間軸都顯示新名稱

對應 QA 情境

TC-9

調整步驟順序

正向P0

情境說明

  • 作者把一個步驟往後移

預期結果

  • 兩步交換位置,每步的開始時間重新計算

對應 QA 情境

TC-11

把太長的步驟拆成兩步

正向P1

情境說明

  • 作者拆分一個有 4 行說明的步驟

預期結果

  • 變成兩步、說明各一半,總時間不變

對應 QA 情境

TC-15

把太碎的步驟合成一步

正向P1

情境說明

  • 作者合併相鄰兩步

預期結果

  • 保留前一步名稱,說明與時間相加

對應 QA 情境

TC-17

刪除多餘步驟

正向P0

情境說明

  • 作者確認刪除中間一步

預期結果

  • 步驟減少、影片變短,後面的步驟往前接

對應 QA 情境

TC-23

刪步驟後翻譯不錯位

正向P0

情境說明

  • 影片已有西文翻譯,作者刪掉一步

預期結果

  • 西文也少掉同一步,其他步驟的翻譯仍對得上

對應 QA 情境

TC-25

刪步驟後畫面提示不錯位

正向P1

情境說明

  • 影片有畫面提示,作者刪掉前面一步

預期結果

  • 提示仍出現在原本那一步的同一時間點

對應 QA 情境

TC-22

不會刪錯步驟

例外P1

情境說明

  • 作者先選了一步,又改了步驟結構再按刪除片段

預期結果

  • 不會出錯,也不會刪掉別的步驟

對應 QA 情境

TC-26

誤刪可以復原

正向P0

情境說明

  • 作者誤刪一步後按復原

預期結果

  • 步驟回來;按重做又會再刪掉

對應 QA 情境

TC-8

改完直接儲存就能存好

例外P1

情境說明

  • 作者改步驟名稱後立刻按儲存

預期結果

  • 一次就存好,重新整理後是新名稱

對應 QA 情境

TC-30

學員看到儲存後的步驟

正向P0

情境說明

  • 作者合併步驟並儲存

預期結果

  • 學員端的步驟清單同步變成新的結構

對應 QA 情境

待釐清

需要 PM 回答的問題,會影響預期結果。

  • 移動或刪除步驟後,影片畫面要不要跟著重排、剪掉?
  • 步驟很短(1 秒)時還能拆分嗎?
  • 步驟的說明文字可以全部刪光嗎?
  • 儲存後還要能復原到儲存前嗎?

QA 測試範圍:每個情境一段,前置條件、操作、預期結果。逐條核對後打勾,勾選只存在你的瀏覽器中。

qe-text-edit.feature

校正 AI 產生的步驟標題與逐字稿

作為一個 Smart Video 作者我想要修正 AI 切出來的步驟標題與逐字稿以便學員看到正確的作業說明與字幕

步驟標題4

TC-1

修改步驟標題後縮圖與時間軸同步顯示新標題

QuickEdit面板修改標題正向冒煙P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "2" 步標題改成 "Climb Into the Lift"

預期結果

  • 第 "2" 步縮圖顯示 "2. Climb Into the Lift"
  • 時間軸第 "2" 段顯示 "2. Climb Into the Lift"
TC-2

清空步驟標題時還原原標題並提示

QuickEdit面板標題清空負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "2" 步標題清空

預期結果

  • 系統提示 "Step title cannot be empty"
  • 第 "2" 步標題仍為 "Enter the List"
TC-3

步驟標題最多保留 80 個字

QuickEdit面板標題80字邊界邊界P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我在第 "2" 步標題輸入 "81" 個字

預期結果

  • 第 "2" 步標題只保留前 "80" 個字
TC-4

步驟標題含 HTML 字元時以純文字顯示

QuickEdit面板特殊字元負向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "2" 步標題改成 "<b>Lift</b>"

預期結果

  • 第 "2" 步縮圖以純文字顯示 "2. <b>Lift</b>"

逐字稿4

TC-5

修改逐字稿一行後保留新文字

QuickEdit面板修改逐字稿正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "1" 步第 "2" 行改成 "This is Bill Hurley, chief at MXD."

預期結果

  • 第 "1" 步第 "2" 行為 "This is Bill Hurley, chief at MXD."
  • 第 "1" 步仍有 "4" 行
TC-6

清空逐字稿一行時刪除該行

QuickEdit面板清空逐字稿行負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "1" 步第 "2" 行清空

預期結果

  • 第 "1" 步剩 "3" 行
  • 第 "1" 步第 "2" 行為 "This morning to show you how"
TC-7

在逐字稿按 Enter 結束編輯而不新增行

QuickEdit面板Enter結束編輯負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我在第 "2" 步第 "1" 行按 Enter

預期結果

  • 第 "2" 步仍只有 "1" 行
TC-8

修改步驟標題後直接按儲存一次就能存檔

QuickEdit面板編輯後直接儲存例外P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"

操作

  • 我把第 "2" 步標題改成 "Climb Into the Lift" 後直接按 "Save"

預期結果

  • 系統提示 "Changes saved"
  • 重新整理後第 "2" 步標題為 "Climb Into the Lift"
qe-structure.feature

調整 AI 切出的步驟結構

作為一個 Smart Video 作者我想要重新排序、拆分、合併或刪除步驟以便步驟切分符合現場作業的實際順序與粒度

上移/下移2

TC-9

把第 2 步下移後與第 3 步交換且起點重算

步驟排序下移步驟正向冒煙P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我把第 "2" 步下移

預期結果

  • 第 "2" 步為 "Secure the Chain",第 "3" 步為 "Enter the List"
  • 每一步的起點等於前面各步時長加總
TC-10

第一步不能上移且最後一步不能下移

步驟排序首尾不可移邊界邊界P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我查看第 "1" 步與第 "7" 步的工具列

預期結果

  • 第 "1" 步的上移無法點擊
  • 第 "7" 步的下移無法點擊

拆分4

TC-11

拆分 4 行的步驟成兩步且逐字稿對半

步驟拆分拆分步驟正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我拆分第 "1" 步

預期結果

  • 共有 "8" 個步驟
  • 第 "1" 步標題為 "Operate Skyjack Scissor Lift" 且有 "2" 行
  • 第 "2" 步標題為 "Operate Skyjack Scissor Lift (2)" 且有 "2" 行
  • 兩步時長加總等於原第 "1" 步時長
TC-12

只有一行逐字稿的步驟不能拆分

步驟拆分單行不可拆負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我查看第 "2" 步的工具列

預期結果

  • 第 "2" 步的拆分無法點擊
TC-13

拆分有附件的步驟時附件留在前半步

步驟拆分拆分附件歸屬正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"
  • 第 "4" 步有附件 "chain-spec.pdf"

操作

  • 我拆分第 "4" 步

預期結果

  • 第 "4" 步有附件 "chain-spec.pdf"
  • 第 "5" 步沒有附件
TC-14

拆分只有 1 秒的步驟不會產生 0 秒步驟

步驟拆分一秒步驟拆分邊界邊界P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"
  • 第 "4" 步時長為 "1" 秒且有 "2" 行逐字稿

操作

  • 我拆分第 "4" 步

預期結果

  • 沒有任何步驟的時長為 "0" 秒

合併2

TC-15

合併第 2 步與第 3 步後保留前一步標題並合併逐字稿

步驟合併合併步驟正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我把第 "2" 步與下一步合併

預期結果

  • 共有 "6" 個步驟
  • 第 "2" 步標題為 "Enter the List",逐字稿依序為 "we'll start by climbing into the list." 與 "it's secure the chain."
  • 第 "2" 步時長等於原第 "2"、"3" 步時長加總
TC-16

最後一步不能再往下合併

步驟合併最後一步不可合併邊界邊界P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我查看第 "7" 步的工具列

預期結果

  • 第 "7" 步的合併無法點擊

刪除與 Erase Video6

TC-17

確認刪除中間步驟後總長縮短且後續步驟前移

步驟刪除刪除步驟正向P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我刪除第 "3" 步並確認

預期結果

  • 共有 "6" 個步驟
  • 總長減少原第 "3" 步的時長
  • 第 "3" 步為 "Pull Emergency Stop" 且起點等於原第 "3" 步起點
TC-18

取消刪除確認時步驟不變

步驟刪除取消刪除負向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我刪除第 "3" 步但在確認時取消

預期結果

  • 仍有 "7" 個步驟
  • "Save" 按鈕維持不可點擊
TC-19

只剩一個步驟時不能再刪除

步驟刪除只剩一步邊界邊界P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"
  • 這支影片只剩 "1" 個步驟

操作

  • 我嘗試刪除這個步驟

預期結果

  • 系統提示 "A Smart Video needs at least one step"
  • 仍有 "1" 個步驟
TC-20

未選取時間軸步驟時無法使用 Erase Video

時間軸未選步驟負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我開啟 Quick Edit 面板但未選取任何步驟

預期結果

  • "Erase Video" 無法點擊
TC-21

在時間軸選取步驟後 Erase Video 移除該步

時間軸Erase選取步驟正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"

操作

  • 我在時間軸選取第 "5" 步並以 "Erase Video" 移除

預期結果

  • 共有 "6" 個步驟
  • 不再有 "Turn Power Switch to AD" 步驟
TC-22

選取最後一步後刪掉其他步驟再 Erase 不會出錯也不會刪錯

時間軸選取後結構改變例外邊界P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片有 "7" 個步驟、總長 "01:44"
  • 我在時間軸選取第 "7" 步 "Disable Scissor Lift Power"

操作

  • 我刪除第 "1" 步並確認後再按 "Erase Video"

預期結果

  • 頁面沒有錯誤
  • 不會刪除 "Disable Scissor Lift Power" 以外的步驟
qe-linked-content.feature

調整步驟後相關內容跟著同步

作為一個 Smart Video 作者我想要在重排或刪除步驟後,翻譯與註記仍對應到正確的步驟以便各語言學員與畫面提示都不會錯位

TC-23

刪除步驟後翻譯的步驟同時移除

相關內容刪除後翻譯正向P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片已有 "Spanish-MX" 翻譯並已儲存

操作

  • 我刪除第 "2" 步並確認

預期結果

  • "Spanish-MX" 翻譯的第 "2" 步為 "Asegure la cadena"
TC-24

移動步驟後翻譯的步驟順序同步

相關內容移動後翻譯正向P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片已有 "Spanish-MX" 翻譯並已儲存

操作

  • 我把第 "2" 步下移

預期結果

  • "Spanish-MX" 翻譯的第 "2" 步為 "Asegure la cadena"
  • "Spanish-MX" 翻譯的第 "3" 步為 "Entrar a la lista"
TC-25

刪除前面的步驟後註記跟著前移

相關內容刪除後註記正向邊界P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 這支影片已有 "Spanish-MX" 翻譯並已儲存
  • 第 "6" 步開始後 "5" 秒有一則註記 "Squeeze the trigger"

操作

  • 我刪除第 "2" 步並確認

預期結果

  • 註記 "Squeeze the trigger" 仍在第 "5" 步開始後 "5" 秒
qe-history-save.feature

步驟編輯的復原、儲存與學員端呈現

作為一個 Smart Video 作者我想要能復原誤操作,並清楚掌握何時保存以便學員看到的是我確認過的步驟

Undo / Redo4

TC-26

誤刪步驟後可以復原與重做

復原重做復原刪除正向冒煙P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我刪除第 "3" 步並確認後按復原

預期結果

  • 仍有 "7" 個步驟且第 "3" 步為 "Secure the Chain"
  • 按重做後共有 "6" 個步驟
TC-27

連續三個操作可以依序全部復原

復原重做多次復原正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我依序修改第 "2" 步標題、下移第 "4" 步、合併第 "5" 步後連按 "3" 次復原

預期結果

  • 步驟與進入 Editor 時完全相同
  • "Save" 按鈕無法點擊
TC-28

復原後做新操作時重做被清空

復原重做新操作清空重做負向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我下移第 "2" 步、按復原、再修改第 "1" 步標題

預期結果

  • 重做無法點擊
TC-29

尚未修改時無法復原或重做

復原重做初始無復原負向P3

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我開啟 Quick Edit 面板

預期結果

  • 復原與重做都無法點擊

儲存、放棄、離開6

TC-30

儲存後學員在播放器看到新的步驟

步驟儲存儲存後學員端正向冒煙P0

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我把第 "2" 步與下一步合併並儲存
  • 我在播放器開啟這支影片

預期結果

  • 步驟清單有 "6" 個步驟
  • 第 "2" 個步驟顯示 "Enter the List"
TC-31

未儲存的步驟變更不會出現在播放器

步驟儲存未存不外洩負向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我刪除第 "3" 步並確認但不儲存
  • 我離開 Editor 並選擇放棄變更

預期結果

  • 播放器步驟清單仍有 "7" 個步驟
TC-32

有未儲存的步驟變更時離開會提示並可留下

步驟儲存未存離開留下例外P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我下移第 "2" 步後嘗試離開 Editor 並選擇留下

預期結果

  • 仍停在 Quick Edit 且第 "2" 步為 "Secure the Chain"
TC-33

放棄變更後回到上次儲存的步驟

步驟儲存放棄變更正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 我已把第 "2" 步標題改成 "Climb Into the Lift" 並儲存

操作

  • 我再刪除第 "1" 步並確認後選擇 "Discard changes"

預期結果

  • 共有 "7" 個步驟且第 "2" 步標題為 "Climb Into the Lift"
TC-34

儲存後按復原會回到儲存前並變成未儲存

步驟儲存儲存後復原邊界P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 我已把第 "2" 步標題改成 "Climb Into the Lift" 並儲存

操作

  • 我按復原

預期結果

  • 第 "2" 步標題為 "Enter the List"
  • "Save" 按鈕可以點擊
TC-35

儲存刪除後在播放器點最後一步會跳到正確起點

步驟儲存播放器步驟定位正向P1

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板
  • 我已刪除第 "3" 步並儲存

操作

  • 我在播放器點選第 "6" 個步驟

預期結果

  • 播放時間位於 "Disable Scissor Lift Power" 的起點
  • 步驟字卡顯示 "06 Disable Scissor Lift Power"

時間軸定位2

TC-36

點縮圖會選取該步並把播放頭移到起點

時間軸縮圖定位正向P2

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我點選第 "4" 步縮圖

預期結果

  • 時間軸第 "4" 段為選取狀態
  • 預覽時間為第 "4" 步起點
TC-37

時間軸縮放只能在 1 到 4 倍之間

時間軸縮放上下限邊界邊界P3

前置條件

  • 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板

操作

  • 我連按 "5" 次放大後再連按 "5" 次縮小

預期結果

  • 縮放值依序停在 "4" 與 "1"

沒有符合篩選條件的情境。

以下 Gherkin 是用例的原文,確認後會直接轉成自動化測試。

步驟顏色

Given、When、Then 各用一種顏色,一眼分出前置、操作與結果。

Given前置條件When操作Then預期結果And/But 沿用上一個步驟的顏色

Tag 說明

CLI 依 tag 做覆蓋檢查。

套件@regression 每個情境都要有;核心正向流程再加 @smoke
執行@auto 代表可以自動化;沒有 @auto 就是人工驗收
性質@邊界 只標臨界值、資源耗盡、競態、故障這類極端情境
描述其餘中文 tag 描述頁面與情境條件,例如 @登入頁面 @密碼錯誤
編號情境編號、優先級與風險記在 design.json,不放進 tag
design/features/qe-text-edit.feature
# 頁面 code 路徑:app/views/editor-panels.js(quickEdit:data-qe-title、data-qe-line)# 註:步驟標題在離開欄位時寫入草稿;逐字稿行在離開該行時寫入Feature: 校正 AI 產生的步驟標題與逐字稿  作為一個 Smart Video 作者  我想要修正 AI 切出來的步驟標題與逐字稿  以便學員看到正確的作業說明與字幕   Background:    Given 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板    And 這支影片有 "7" 個步驟,第 "2" 步標題為 "Enter the List"   # ############################################  # 步驟標題  # ############################################  @QuickEdit面板 @smoke @regression @auto @修改標題  Scenario: 修改步驟標題後縮圖與時間軸同步顯示新標題    When 我把第 "2" 步標題改成 "Climb Into the Lift"    Then 第 "2" 步縮圖顯示 "2. Climb Into the Lift"    And 時間軸第 "2" 段顯示 "2. Climb Into the Lift"   @QuickEdit面板 @regression @auto @標題清空  Scenario: 清空步驟標題時還原原標題並提示    When 我把第 "2" 步標題清空    Then 系統提示 "Step title cannot be empty"    And 第 "2" 步標題仍為 "Enter the List"   @QuickEdit面板 @regression @auto @邊界 @標題80字  Scenario: 步驟標題最多保留 80 個字    When 我在第 "2" 步標題輸入 "81" 個字    Then 第 "2" 步標題只保留前 "80" 個字   @QuickEdit面板 @regression @auto @特殊字元  Scenario: 步驟標題含 HTML 字元時以純文字顯示    When 我把第 "2" 步標題改成 "<b>Lift</b>"    Then 第 "2" 步縮圖以純文字顯示 "2. <b>Lift</b>"   # ############################################  # 逐字稿  # ############################################  @QuickEdit面板 @regression @auto @修改逐字稿  Scenario: 修改逐字稿一行後保留新文字    When 我把第 "1" 步第 "2" 行改成 "This is Bill Hurley, chief at MXD."    Then 第 "1" 步第 "2" 行為 "This is Bill Hurley, chief at MXD."    And 第 "1" 步仍有 "4" 行   @QuickEdit面板 @regression @auto @清空逐字稿行  Scenario: 清空逐字稿一行時刪除該行    When 我把第 "1" 步第 "2" 行清空    Then 第 "1" 步剩 "3" 行    And 第 "1" 步第 "2" 行為 "This morning to show you how"   @QuickEdit面板 @regression @auto @Enter結束編輯  Scenario: 在逐字稿按 Enter 結束編輯而不新增行    When 我在第 "2" 步第 "1" 行按 Enter    Then 第 "2" 步仍只有 "1" 行   @QuickEdit面板 @regression @auto @編輯後直接儲存  Scenario: 修改步驟標題後直接按儲存一次就能存檔    When 我把第 "2" 步標題改成 "Climb Into the Lift" 後直接按 "Save"    Then 系統提示 "Changes saved"    And 重新整理後第 "2" 步標題為 "Climb Into the Lift"
design/features/qe-structure.feature
# 頁面 code 路徑:app/views/editor-panels.js(quickEdit:move、split、merge、del)、app/views/editor.js(eraseStep)# 註:clone 只重算步驟時間表,不重排或剪輯影片檔(見 context assumptions)Feature: 調整 AI 切出的步驟結構  作為一個 Smart Video 作者  我想要重新排序、拆分、合併或刪除步驟  以便步驟切分符合現場作業的實際順序與粒度   Background:    Given 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板    And 這支影片有 "7" 個步驟、總長 "01:44"   # ############################################  # 上移/下移  # ############################################  @步驟排序 @smoke @regression @auto @下移步驟  Scenario: 把第 2 步下移後與第 3 步交換且起點重算    When 我把第 "2" 步下移    Then 第 "2" 步為 "Secure the Chain",第 "3" 步為 "Enter the List"    And 每一步的起點等於前面各步時長加總   @步驟排序 @regression @auto @邊界 @首尾不可移  Scenario: 第一步不能上移且最後一步不能下移    When 我查看第 "1" 步與第 "7" 步的工具列    Then 第 "1" 步的上移無法點擊    And 第 "7" 步的下移無法點擊   # ############################################  # 拆分  # ############################################  @步驟拆分 @regression @auto @拆分步驟  Scenario: 拆分 4 行的步驟成兩步且逐字稿對半    When 我拆分第 "1" 步    Then 共有 "8" 個步驟    And 第 "1" 步標題為 "Operate Skyjack Scissor Lift" 且有 "2" 行    And 第 "2" 步標題為 "Operate Skyjack Scissor Lift (2)" 且有 "2" 行    And 兩步時長加總等於原第 "1" 步時長   @步驟拆分 @regression @auto @單行不可拆  Scenario: 只有一行逐字稿的步驟不能拆分    When 我查看第 "2" 步的工具列    Then 第 "2" 步的拆分無法點擊   @步驟拆分 @regression @auto @拆分附件歸屬  Scenario: 拆分有附件的步驟時附件留在前半步    Given 第 "4" 步有附件 "chain-spec.pdf"    When 我拆分第 "4" 步    Then 第 "4" 步有附件 "chain-spec.pdf"    And 第 "5" 步沒有附件   @步驟拆分 @regression @auto @邊界 @一秒步驟拆分  Scenario: 拆分只有 1 秒的步驟不會產生 0 秒步驟    Given 第 "4" 步時長為 "1" 秒且有 "2" 行逐字稿    When 我拆分第 "4" 步    Then 沒有任何步驟的時長為 "0" 秒   # ############################################  # 合併  # ############################################  @步驟合併 @regression @auto @合併步驟  Scenario: 合併第 2 步與第 3 步後保留前一步標題並合併逐字稿    When 我把第 "2" 步與下一步合併    Then 共有 "6" 個步驟    And 第 "2" 步標題為 "Enter the List",逐字稿依序為 "we'll start by climbing into the list." 與 "it's secure the chain."    And 第 "2" 步時長等於原第 "2"、"3" 步時長加總   @步驟合併 @regression @auto @邊界 @最後一步不可合併  Scenario: 最後一步不能再往下合併    When 我查看第 "7" 步的工具列    Then 第 "7" 步的合併無法點擊   # ############################################  # 刪除與 Erase Video  # ############################################  @步驟刪除 @regression @auto @刪除步驟  Scenario: 確認刪除中間步驟後總長縮短且後續步驟前移    When 我刪除第 "3" 步並確認    Then 共有 "6" 個步驟    And 總長減少原第 "3" 步的時長    And 第 "3" 步為 "Pull Emergency Stop" 且起點等於原第 "3" 步起點   @步驟刪除 @regression @auto @取消刪除  Scenario: 取消刪除確認時步驟不變    When 我刪除第 "3" 步但在確認時取消    Then 仍有 "7" 個步驟    And "Save" 按鈕維持不可點擊   @步驟刪除 @regression @auto @邊界 @只剩一步  Scenario: 只剩一個步驟時不能再刪除    Given 這支影片只剩 "1" 個步驟    When 我嘗試刪除這個步驟    Then 系統提示 "A Smart Video needs at least one step"    And 仍有 "1" 個步驟   @時間軸 @regression @auto @未選步驟  Scenario: 未選取時間軸步驟時無法使用 Erase Video    When 我開啟 Quick Edit 面板但未選取任何步驟    Then "Erase Video" 無法點擊   @時間軸 @regression @auto @Erase選取步驟  Scenario: 在時間軸選取步驟後 Erase Video 移除該步    When 我在時間軸選取第 "5" 步並以 "Erase Video" 移除    Then 共有 "6" 個步驟    And 不再有 "Turn Power Switch to AD" 步驟   @時間軸 @regression @auto @邊界 @選取後結構改變  Scenario: 選取最後一步後刪掉其他步驟再 Erase 不會出錯也不會刪錯    Given 我在時間軸選取第 "7" 步 "Disable Scissor Lift Power"    When 我刪除第 "1" 步並確認後再按 "Erase Video"    Then 頁面沒有錯誤    And 不會刪除 "Disable Scissor Lift Power" 以外的步驟
design/features/qe-linked-content.feature
# 頁面 code 路徑:app/views/editor-panels.js(quickEdit、buildTranslation、annotations)# 註:翻譯以步驟順序對應;註記以秒數定位。預期行為為「跟著步驟一起調整」,現行實作疑似未調整(R-1)Feature: 調整步驟後相關內容跟著同步  作為一個 Smart Video 作者  我想要在重排或刪除步驟後,翻譯與註記仍對應到正確的步驟  以便各語言學員與畫面提示都不會錯位   Background:    Given 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板    And 這支影片已有 "Spanish-MX" 翻譯並已儲存   @相關內容 @regression @auto @刪除後翻譯  Scenario: 刪除步驟後翻譯的步驟同時移除    When 我刪除第 "2" 步並確認    Then "Spanish-MX" 翻譯的第 "2" 步為 "Asegure la cadena"   @相關內容 @regression @auto @移動後翻譯  Scenario: 移動步驟後翻譯的步驟順序同步    When 我把第 "2" 步下移    Then "Spanish-MX" 翻譯的第 "2" 步為 "Asegure la cadena"    And "Spanish-MX" 翻譯的第 "3" 步為 "Entrar a la lista"   @相關內容 @regression @auto @邊界 @刪除後註記  Scenario: 刪除前面的步驟後註記跟著前移    Given 第 "6" 步開始後 "5" 秒有一則註記 "Squeeze the trigger"    When 我刪除第 "2" 步並確認    Then 註記 "Squeeze the trigger" 仍在第 "5" 步開始後 "5" 秒
design/features/qe-history-save.feature
# 頁面 code 路徑:app/views/editor.js(change、undo/redo、Save、Discard、leave、timeline)、app/views/player.js# 註:Undo/Redo 位於時間軸工具列Feature: 步驟編輯的復原、儲存與學員端呈現  作為一個 Smart Video 作者  我想要能復原誤操作,並清楚掌握何時保存  以便學員看到的是我確認過的步驟   Background:    Given 我在 "Forklift Operation Walkthrough" 的 Editor Quick Edit 面板   # ############################################  # Undo / Redo  # ############################################  @復原重做 @smoke @regression @auto @復原刪除  Scenario: 誤刪步驟後可以復原與重做    When 我刪除第 "3" 步並確認後按復原    Then 仍有 "7" 個步驟且第 "3" 步為 "Secure the Chain"    And 按重做後共有 "6" 個步驟   @復原重做 @regression @auto @多次復原  Scenario: 連續三個操作可以依序全部復原    When 我依序修改第 "2" 步標題、下移第 "4" 步、合併第 "5" 步後連按 "3" 次復原    Then 步驟與進入 Editor 時完全相同    And "Save" 按鈕無法點擊   @復原重做 @regression @auto @新操作清空重做  Scenario: 復原後做新操作時重做被清空    When 我下移第 "2" 步、按復原、再修改第 "1" 步標題    Then 重做無法點擊   @復原重做 @regression @auto @初始無復原  Scenario: 尚未修改時無法復原或重做    When 我開啟 Quick Edit 面板    Then 復原與重做都無法點擊   # ############################################  # 儲存、放棄、離開  # ############################################  @步驟儲存 @smoke @regression @auto @儲存後學員端  Scenario: 儲存後學員在播放器看到新的步驟    When 我把第 "2" 步與下一步合併並儲存    And 我在播放器開啟這支影片    Then 步驟清單有 "6" 個步驟    And 第 "2" 個步驟顯示 "Enter the List"   @步驟儲存 @regression @auto @未存不外洩  Scenario: 未儲存的步驟變更不會出現在播放器    When 我刪除第 "3" 步並確認但不儲存    And 我離開 Editor 並選擇放棄變更    Then 播放器步驟清單仍有 "7" 個步驟   @步驟儲存 @regression @auto @未存離開留下  Scenario: 有未儲存的步驟變更時離開會提示並可留下    When 我下移第 "2" 步後嘗試離開 Editor 並選擇留下    Then 仍停在 Quick Edit 且第 "2" 步為 "Secure the Chain"   @步驟儲存 @regression @auto @放棄變更  Scenario: 放棄變更後回到上次儲存的步驟    Given 我已把第 "2" 步標題改成 "Climb Into the Lift" 並儲存    When 我再刪除第 "1" 步並確認後選擇 "Discard changes"    Then 共有 "7" 個步驟且第 "2" 步標題為 "Climb Into the Lift"   @步驟儲存 @regression @auto @儲存後復原  Scenario: 儲存後按復原會回到儲存前並變成未儲存    Given 我已把第 "2" 步標題改成 "Climb Into the Lift" 並儲存    When 我按復原    Then 第 "2" 步標題為 "Enter the List"    And "Save" 按鈕可以點擊   @步驟儲存 @regression @auto @播放器步驟定位  Scenario: 儲存刪除後在播放器點最後一步會跳到正確起點    Given 我已刪除第 "3" 步並儲存    When 我在播放器點選第 "6" 個步驟    Then 播放時間位於 "Disable Scissor Lift Power" 的起點    And 步驟字卡顯示 "06 Disable Scissor Lift Power"   # ############################################  # 時間軸定位  # ############################################  @時間軸 @regression @auto @縮圖定位  Scenario: 點縮圖會選取該步並把播放頭移到起點    When 我點選第 "4" 步縮圖    Then 時間軸第 "4" 段為選取狀態    And 預覽時間為第 "4" 步起點   @時間軸 @regression @auto @邊界 @縮放上下限  Scenario: 時間軸縮放只能在 1 到 4 倍之間    When 我連按 "5" 次放大後再連按 "5" 次縮小    Then 縮放值依序停在 "4" 與 "1"