@@ -13,10 +13,11 @@ import 'dart:async';
13
13
import 'dart:convert' ;
14
14
15
15
import 'package:dwds/data/debug_info.dart' ;
16
- import 'package:dwds/data/serializers.dart' ;
17
16
import 'package:puppeteer/puppeteer.dart' ;
18
17
import 'package:test/test.dart' ;
19
18
19
+ import '../../debug_extension_mv3/web/data_serializers.dart' ;
20
+ import '../../debug_extension_mv3/web/data_types.dart' ;
20
21
import '../fixtures/context.dart' ;
21
22
import 'test_utils.dart' ;
22
23
@@ -61,11 +62,17 @@ void main() async {
61
62
.waitForTarget ((target) => target.type == 'service_worker' );
62
63
});
63
64
65
+ tearDown (() async {
66
+ final worker = (await serviceWorkerTarget.worker)! ;
67
+ await Future .delayed (Duration (seconds: executionContextDelay));
68
+ await worker.evaluate (_clearStorageJs ());
69
+ });
70
+
64
71
tearDownAll (() async {
65
72
await browser.close ();
66
73
});
67
74
68
- test ('the debug info for a Dart app is saved in the extension storage' ,
75
+ test ('the debug info for a Dart app is saved in session storage' ,
69
76
() async {
70
77
final appUrl = context.appUrl;
71
78
// Navigate to the Dart app:
@@ -77,8 +84,8 @@ void main() async {
77
84
final tabIdForAppJs = _tabIdForTabJs (appUrl);
78
85
final appTabId = (await worker.evaluate (tabIdForAppJs)) as int ;
79
86
final debugInfoKey = '$appTabId -debugInfo' ;
80
- final storageObj =
81
- await worker. evaluate ( _fetchStorageObjJs (debugInfoKey));
87
+ final storageObj = await worker. evaluate (
88
+ _fetchStorageObjJs (debugInfoKey, storageArea : 'session' ));
82
89
final json = storageObj[debugInfoKey];
83
90
final debugInfo =
84
91
serializers.deserialize (jsonDecode (json)) as DebugInfo ;
@@ -92,6 +99,32 @@ void main() async {
92
99
await appTab.close ();
93
100
});
94
101
102
+ test ('whether to open in a new tab or window is saved in local storage' ,
103
+ () async {
104
+ // Navigate to the extension settings page:
105
+ final extensionOrigin = getExtensionOrigin (browser);
106
+ final settingsTab = await navigateToPage (
107
+ browser,
108
+ url: '$extensionOrigin /settings.html' ,
109
+ isNew: true ,
110
+ );
111
+ // Set the settings to open DevTools in a new window:
112
+ await settingsTab.tap ('#windowOpt' );
113
+ await settingsTab.tap ('#saveButton' );
114
+ // Wait for the saved message to verify settings have been saved:
115
+ await settingsTab.waitForSelector ('#savedMsg' );
116
+ // Close the settings tab:
117
+ await settingsTab.close ();
118
+ // Check that is has been saved in local storage:
119
+ final worker = (await serviceWorkerTarget.worker)! ;
120
+ final storageObj = await worker.evaluate (
121
+ _fetchStorageObjJs ('devToolsOpener' , storageArea: 'local' ));
122
+ final json = storageObj['devToolsOpener' ];
123
+ final devToolsOpener =
124
+ serializers.deserialize (jsonDecode (json)) as DevToolsOpener ;
125
+ expect (devToolsOpener.newWindow, isTrue);
126
+ });
127
+
95
128
test (
96
129
'can configure opening DevTools in a tab/window with extension settings' ,
97
130
() async {
@@ -173,12 +206,15 @@ String _windowIdForTabJs(String tabUrl) {
173
206
''' ;
174
207
}
175
208
176
- String _fetchStorageObjJs (String storageKey) {
209
+ String _fetchStorageObjJs (
210
+ String storageKey, {
211
+ required String storageArea,
212
+ }) {
177
213
return '''
178
214
async () => {
179
215
const storageKey = "$storageKey ";
180
216
return new Promise((resolve, reject) => {
181
- chrome.storage.local .get(storageKey, (storageObj) => {
217
+ chrome.storage.$ storageArea .get(storageKey, (storageObj) => {
182
218
if (storageObj != null) {
183
219
resolve(storageObj);
184
220
} else {
@@ -189,3 +225,13 @@ String _fetchStorageObjJs(String storageKey) {
189
225
}
190
226
''' ;
191
227
}
228
+
229
+ String _clearStorageJs () {
230
+ return '''
231
+ async () => {
232
+ await chrome.storage.local.clear();
233
+ await chrome.storage.session.clear();
234
+ return true;
235
+ }
236
+ ''' ;
237
+ }
0 commit comments