@@ -13,12 +13,12 @@ import '../fixtures/context.dart';
13
13
import '../fixtures/utilities.dart' ;
14
14
15
15
enum ConsoleSource {
16
- worker,
17
16
devTools,
17
+ worker,
18
18
}
19
19
20
- final _workerLogs = [];
21
20
final _devToolsLogs = [];
21
+ final _workerLogs = [];
22
22
23
23
Future <String > buildDebugExtension () async {
24
24
final extensionDir = absolutePath (pathFromDwds: 'debug_extension_mv3' );
@@ -65,7 +65,7 @@ Future<void> tearDownHelper({required Worker worker}) async {
65
65
_logConsoleMsgsOnFailure ();
66
66
_workerLogs.clear ();
67
67
_devToolsLogs.clear ();
68
- await worker. evaluate (_clearStorageJs). catchError ((_) {} );
68
+ await _clearStorage (worker : worker );
69
69
}
70
70
71
71
Future <Worker > getServiceWorker (Browser browser) async {
@@ -77,7 +77,7 @@ Future<Worker> getServiceWorker(Browser browser) async {
77
77
worker.url,
78
78
onConsoleApiCalled: (type, jsHandles, _) {
79
79
for (var handle in jsHandles) {
80
- saveConsoleMsg (
80
+ _saveConsoleMsg (
81
81
source: ConsoleSource .worker, type: '$type ' , msg: '$handle ' );
82
82
}
83
83
},
@@ -91,7 +91,7 @@ Future<Page> getChromeDevToolsPage(Browser browser) async {
91
91
chromeDevToolsTarget.type = 'page' ;
92
92
final chromeDevToolsPage = await chromeDevToolsTarget.page;
93
93
chromeDevToolsPage.onConsole.listen ((msg) {
94
- saveConsoleMsg (
94
+ _saveConsoleMsg (
95
95
source: ConsoleSource .devTools,
96
96
type: '${msg .type }' ,
97
97
msg: msg.text ?? '' ,
@@ -100,26 +100,12 @@ Future<Page> getChromeDevToolsPage(Browser browser) async {
100
100
return chromeDevToolsPage;
101
101
}
102
102
103
- void saveConsoleMsg ({
104
- required ConsoleSource source,
105
- required String type,
106
- required String msg,
107
- }) {
108
- if (msg.isEmpty) return ;
109
- final consiseMsg = msg.startsWith ('JSHandle:' ) ? msg.substring (9 ) : msg;
110
- final formatted = 'console.$type : $consiseMsg ' ;
111
- switch (source) {
112
- case ConsoleSource .worker:
113
- _workerLogs.add (formatted);
114
- break ;
115
- case ConsoleSource .devTools:
116
- _devToolsLogs.add (formatted);
117
- break ;
118
- }
103
+ Future evaluate (String jsExpression, {required Worker worker}) async {
104
+ return worker.evaluate (jsExpression);
119
105
}
120
106
121
107
Future <void > clickOnExtensionIcon (Worker worker) async {
122
- return worker. evaluate (_clickIconJs);
108
+ return evaluate (_clickIconJs, worker : worker );
123
109
}
124
110
125
111
// Note: The following delay is required to reduce flakiness. It makes
@@ -156,6 +142,24 @@ String getExtensionOrigin(Browser browser) {
156
142
return '$chromeExtension //$extensionId ' ;
157
143
}
158
144
145
+ void _saveConsoleMsg ({
146
+ required ConsoleSource source,
147
+ required String type,
148
+ required String msg,
149
+ }) {
150
+ if (msg.isEmpty) return ;
151
+ final consiseMsg = msg.startsWith ('JSHandle:' ) ? msg.substring (9 ) : msg;
152
+ final formatted = 'console.$type : $consiseMsg ' ;
153
+ switch (source) {
154
+ case ConsoleSource .devTools:
155
+ _devToolsLogs.add (formatted);
156
+ break ;
157
+ case ConsoleSource .worker:
158
+ _workerLogs.add (formatted);
159
+ break ;
160
+ }
161
+ }
162
+
159
163
void _logConsoleMsgsOnFailure () {
160
164
if (_workerLogs.isNotEmpty) {
161
165
printOnFailure (['Service Worker logs:' , ..._workerLogs].join ('\n ' ));
@@ -174,6 +178,15 @@ Future<Page> _getPageForUrl(Browser browser, {required String url}) {
174
178
return pageTarget.page;
175
179
}
176
180
181
+ Future <void > _clearStorage ({
182
+ required Worker worker,
183
+ }) async {
184
+ return evaluate (
185
+ _clearStorageJs,
186
+ worker: worker,
187
+ ).catchError ((_) {});
188
+ }
189
+
177
190
final _clickIconJs = '''
178
191
async () => {
179
192
const activeTabs = await chrome.tabs.query({ active: true });
0 commit comments