@@ -4,6 +4,7 @@ import { expect, test } from '@tests/fixtures/background'
4
4
import BilibiliPage from '@tests/helpers/bilibili-page'
5
5
import logger from '@tests/helpers/logger'
6
6
import { getSuperChatList } from '@tests/utils/playwright'
7
+ import { mkdir , writeFile } from 'fs/promises'
7
8
import type { MV2Settings } from '~migrations/schema'
8
9
9
10
test . beforeEach ( async ( { page, extensionId } ) => {
@@ -146,13 +147,45 @@ test('測試導出導入設定', async ({ page }) => {
146
147
await expect ( inputLineGap ) . toHaveValue ( '7' )
147
148
} )
148
149
150
+ // 向下兼容,即舊版設定檔沒有某些新設定區塊,依然可以導入
151
+ test ( '測試導入向下兼容設定' , async ( { page } ) => {
152
+ await mkdir ( 'out' , { recursive : true } )
153
+
154
+ {
155
+ logger . info ( '正在嘗試導入空設定....' )
156
+ await writeFile ( 'out/empty.json' , '{}' )
157
+
158
+ const fileChoosing = page . waitForEvent ( 'filechooser' )
159
+ await page . getByText ( '导入设定' ) . click ( )
160
+ const fileChooser = await fileChoosing
161
+ await fileChooser . setFiles ( 'out/empty.json' )
162
+
163
+ await page . getByText ( '导入的设定文件格式错误。' ) . waitFor ( { state : 'visible' } )
164
+ }
165
+
166
+ await page . reload ( { waitUntil : 'domcontentloaded' } )
167
+
168
+ {
169
+ logger . info ( '正在嘗試導入正確設定....' )
170
+ await writeFile ( 'out/valid.json' , JSON . stringify ( { 'settings.version' : { } } ) )
171
+
172
+ const fileChoosing = page . waitForEvent ( 'filechooser' )
173
+ await page . getByText ( '导入设定' ) . click ( )
174
+ const fileChooser = await fileChoosing
175
+ await fileChooser . setFiles ( 'out/valid.json' )
176
+
177
+ await page . getByText ( '设定已经导入成功。' ) . waitFor ( { state : 'visible' } )
178
+ }
179
+
180
+ } )
181
+
149
182
150
183
test ( '測試清空數據庫' , async ( { page, front : room , api } ) => {
151
184
152
185
await page . bringToFront ( )
153
186
const feature = page . getByText ( '功能设定' )
154
187
await feature . click ( )
155
-
188
+
156
189
const btns = await page . locator ( 'section#settings\\.features' ) . getByText ( '启用离线记录' ) . all ( )
157
190
for ( const btn of btns ) {
158
191
await btn . click ( )
@@ -517,7 +550,7 @@ test('測試导航', async ({ page, serviceWorker }) => {
517
550
test ( '測試點擊使用指南' , async ( { context, page } ) => {
518
551
519
552
await page . getByText ( '功能设定' ) . click ( )
520
-
553
+
521
554
const tutorial = context . waitForEvent ( 'page' )
522
555
await page . getByText ( '使用指南' ) . click ( )
523
556
const tutorialPage = await tutorial
0 commit comments