@@ -125,6 +125,86 @@ test('測試彈出同傳視窗', async ({ room, context, optionPageUrl, page, co
125
125
await expect ( checkbox ) . not . toBeChecked ( )
126
126
} )
127
127
128
+ test ( '测试同传字幕AI总结' , { tag : "@scoped" } , async ( { room, content : p , context, optionPageUrl, page } ) => {
129
+
130
+ logger . info ( '正在修改設定...' )
131
+ const settingsPage = await context . newPage ( )
132
+ await settingsPage . bringToFront ( )
133
+ await settingsPage . goto ( optionPageUrl , { waitUntil : 'domcontentloaded' } )
134
+ await settingsPage . waitForTimeout ( 1000 )
135
+
136
+ await settingsPage . getByText ( '功能设定' ) . click ( )
137
+ await settingsPage . getByText ( 'AI 设定' ) . click ( )
138
+ await settingsPage . getByText ( '启用同传字幕AI总结' ) . click ( )
139
+ await settingsPage . getByText ( '保存设定' ) . click ( )
140
+ await settingsPage . waitForTimeout ( 2000 )
141
+
142
+ logger . info ( '正在測試AI总结...' )
143
+ await page . bringToFront ( )
144
+ const buttonList = await getButtonList ( p )
145
+ expect ( buttonList . length ) . toBe ( 3 )
146
+ await expect ( buttonList [ 2 ] ) . toHaveText ( '同传字幕AI总结' )
147
+
148
+
149
+ await p . locator ( '#subtitle-list' ) . waitFor ( { state : 'visible' } )
150
+ const conversations = [
151
+ '大家好' ,
152
+ '早上好' ,
153
+ '知道我今天吃了什么吗?' ,
154
+ '是麦当劳哦!' ,
155
+ '"不就个麦当劳而已吗"不是啦' ,
156
+ '是最近那个很热门的新品' ,
157
+ '对,就是那个' ,
158
+ '然后呢, 今天久违的出门了' ,
159
+ '对,平时都是宅在家里的呢' ,
160
+ '"终于长大了"喂w' ,
161
+ '然后今天去了漫展来着' ,
162
+ '很多人呢' ,
163
+ '之前的我看到那么多人肯定社恐了' ,
164
+ '但今次意外的没有呢' ,
165
+ '"果然是长大了"也是呢' ,
166
+ '然后呢, 今天买了很多东西' ,
167
+ '插画啊,手办啊,周边之类的' ,
168
+ '荷包大出血w' ,
169
+ '不过觉得花上去应该值得的...吧?' ,
170
+ '喂,好过分啊' ,
171
+ '不过确实不应该花那么多钱的' ,
172
+ '然后呢,回家途中看到了蟑螂的尸体' ,
173
+ '太恶心了' ,
174
+ '然后把我一整天好心情搞没了w' ,
175
+ '"就因为一个蟑螂"对www' ,
176
+ '不过跟你们谈完反而心情好多了' ,
177
+ '谢谢大家' ,
178
+ '那么今天的杂谈就到这里吧' ,
179
+ '下次再见啦' ,
180
+ '拜拜~'
181
+ ]
182
+
183
+ for ( const danmaku of conversations . map ( t => `主播:${ t } ` ) ) {
184
+ await room . sendDanmaku ( `【${ danmaku } 】` )
185
+ }
186
+ await p . waitForTimeout ( 3000 )
187
+
188
+ let subtitleList = await p . locator ( '#subtitle-list > p' ) . filter ( { hasText : '主播:' } ) . all ( )
189
+ expect ( subtitleList . length ) . toBe ( conversations . length )
190
+
191
+ const newWindow = context . waitForEvent ( 'page' , { predicate : p => p . url ( ) . includes ( 'summarizer.html' ) } )
192
+ await buttonList [ 2 ] . click ( )
193
+ const summarizer = await newWindow
194
+ await summarizer . bringToFront ( )
195
+ await expect ( summarizer . getByText ( '正在加载同传字幕总结' ) ) . toBeVisible ( )
196
+ await summarizer . waitForTimeout ( 3000 )
197
+
198
+ await expect ( summarizer . getByText ( '正在加载同传字幕总结' ) ) . toBeHidden ( )
199
+
200
+ await expect ( summarizer . getByText ( '这位日本Vtuber' ) ) . toBeVisible ( )
201
+ await expect ( summarizer . getByText ( '直播' ) ) . toBeVisible ( )
202
+ await expect ( summarizer . getByText ( '观众' ) ) . toBeVisible ( )
203
+ await expect ( summarizer . getByText ( '麦当劳' ) ) . toBeVisible ( )
204
+ await expect ( summarizer . getByText ( '漫展' ) ) . toBeVisible ( )
205
+ await expect ( summarizer . getByText ( '蟑螂' ) ) . toBeVisible ( )
206
+ } )
207
+
128
208
129
209
test ( '測試離線記錄彈幕' , async ( { room, content : p , context, optionPageUrl, page } ) => {
130
210
@@ -340,7 +420,7 @@ test('測試保存設定後 css 能否生效', async ({ context, content, option
340
420
settingsPage . getByTestId ( 'jimaku-position' ) ,
341
421
'置左'
342
422
)
343
-
423
+
344
424
await settingsPage . getByTestId ( 'jimaku-color' ) . fill ( '#123456' )
345
425
346
426
0 commit comments