Skip to content

Commit 3982f5f

Browse files
authored
[MV3 Debug Extension] Clean up tests in preparation for supporting compiling to MV2 (#1964)
1 parent 3ad544e commit 3982f5f

8 files changed

+56
-30
lines changed

dwds/test/puppeteer/extension_test.dart

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,10 @@ void main() async {
277277
final devToolsTabTarget = await browser.waitForTarget(
278278
(target) => target.url.contains(devToolsUrlFragment));
279279
// There should be no warning notifications:
280-
var chromeNotifications = await worker.evaluate(_getNotifications());
280+
var chromeNotifications = await evaluate(
281+
_getNotifications(),
282+
worker: worker,
283+
);
281284
expect(chromeNotifications, isEmpty);
282285
// Navigate back to Dart app:
283286
await navigateToPage(browser, url: appUrl, isNew: false);
@@ -286,7 +289,8 @@ void main() async {
286289
await clickOnExtensionIcon(worker);
287290
await workerEvalDelay();
288291
// There should now be a warning notificiation:
289-
chromeNotifications = await worker.evaluate(_getNotifications());
292+
chromeNotifications =
293+
await evaluate(_getNotifications(), worker: worker);
290294
expect(chromeNotifications, isNotEmpty);
291295
// Close the Dart app and the associated Dart DevTools:
292296
await appTab.close();
@@ -705,15 +709,21 @@ Future<int> _getTabId(
705709
required Worker worker,
706710
}) async {
707711
final jsExpression = _tabIdForTabJs(url);
708-
return (await worker.evaluate(jsExpression)) as int;
712+
return (await evaluate(
713+
jsExpression,
714+
worker: worker,
715+
)) as int;
709716
}
710717

711718
Future<int?> _getWindowId(
712719
String url, {
713720
required Worker worker,
714721
}) async {
715722
final jsExpression = _windowIdForTabJs(url);
716-
return (await worker.evaluate(jsExpression)) as int?;
723+
return (await evaluate(
724+
jsExpression,
725+
worker: worker,
726+
)) as int?;
717727
}
718728

719729
Future<T> _fetchStorageObj<T>(
@@ -722,10 +732,13 @@ Future<T> _fetchStorageObj<T>(
722732
required Worker worker,
723733
}) async {
724734
final json = await retryFnAsync<String>(() async {
725-
final storageObj = await worker.evaluate(_fetchStorageObjJs(
726-
storageKey,
727-
storageArea: storageArea,
728-
));
735+
final storageObj = await evaluate(
736+
_fetchStorageObjJs(
737+
storageKey,
738+
storageArea: storageArea,
739+
),
740+
worker: worker,
741+
);
729742
return storageObj[storageKey];
730743
});
731744
if (T == String) return json as T;
726 Bytes
Loading
317 Bytes
Loading
317 Bytes
Loading
9 Bytes
Loading
9 Bytes
Loading
3 Bytes
Loading

dwds/test/puppeteer/test_utils.dart

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ import '../fixtures/context.dart';
1313
import '../fixtures/utilities.dart';
1414

1515
enum ConsoleSource {
16-
worker,
1716
devTools,
17+
worker,
1818
}
1919

20-
final _workerLogs = [];
2120
final _devToolsLogs = [];
21+
final _workerLogs = [];
2222

2323
Future<String> buildDebugExtension() async {
2424
final extensionDir = absolutePath(pathFromDwds: 'debug_extension_mv3');
@@ -65,7 +65,7 @@ Future<void> tearDownHelper({required Worker worker}) async {
6565
_logConsoleMsgsOnFailure();
6666
_workerLogs.clear();
6767
_devToolsLogs.clear();
68-
await worker.evaluate(_clearStorageJs).catchError((_) {});
68+
await _clearStorage(worker: worker);
6969
}
7070

7171
Future<Worker> getServiceWorker(Browser browser) async {
@@ -77,7 +77,7 @@ Future<Worker> getServiceWorker(Browser browser) async {
7777
worker.url,
7878
onConsoleApiCalled: (type, jsHandles, _) {
7979
for (var handle in jsHandles) {
80-
saveConsoleMsg(
80+
_saveConsoleMsg(
8181
source: ConsoleSource.worker, type: '$type', msg: '$handle');
8282
}
8383
},
@@ -91,7 +91,7 @@ Future<Page> getChromeDevToolsPage(Browser browser) async {
9191
chromeDevToolsTarget.type = 'page';
9292
final chromeDevToolsPage = await chromeDevToolsTarget.page;
9393
chromeDevToolsPage.onConsole.listen((msg) {
94-
saveConsoleMsg(
94+
_saveConsoleMsg(
9595
source: ConsoleSource.devTools,
9696
type: '${msg.type}',
9797
msg: msg.text ?? '',
@@ -100,26 +100,12 @@ Future<Page> getChromeDevToolsPage(Browser browser) async {
100100
return chromeDevToolsPage;
101101
}
102102

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);
119105
}
120106

121107
Future<void> clickOnExtensionIcon(Worker worker) async {
122-
return worker.evaluate(_clickIconJs);
108+
return evaluate(_clickIconJs, worker: worker);
123109
}
124110

125111
// Note: The following delay is required to reduce flakiness. It makes
@@ -156,6 +142,24 @@ String getExtensionOrigin(Browser browser) {
156142
return '$chromeExtension//$extensionId';
157143
}
158144

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+
159163
void _logConsoleMsgsOnFailure() {
160164
if (_workerLogs.isNotEmpty) {
161165
printOnFailure(['Service Worker logs:', ..._workerLogs].join('\n'));
@@ -174,6 +178,15 @@ Future<Page> _getPageForUrl(Browser browser, {required String url}) {
174178
return pageTarget.page;
175179
}
176180

181+
Future<void> _clearStorage({
182+
required Worker worker,
183+
}) async {
184+
return evaluate(
185+
_clearStorageJs,
186+
worker: worker,
187+
).catchError((_) {});
188+
}
189+
177190
final _clickIconJs = '''
178191
async () => {
179192
const activeTabs = await chrome.tabs.query({ active: true });

0 commit comments

Comments
 (0)