Skip to content

Commit 2d7d79f

Browse files
committed
squash! move file to fixtures to remove the chdir
1 parent 849d363 commit 2d7d79f

File tree

3 files changed

+160
-167
lines changed

3 files changed

+160
-167
lines changed

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export default [
7070
// Filtering tsc output files (i.e. if there a foo.ts, we ignore foo.js):
7171
(f, _, files) => f.endsWith('js') && files.includes(f.replace(/(\.[cm]?)js$/, '$1ts')),
7272
),
73+
'!test/fixtures/test-inspector-dom-storage.mjs',
7374
'!test/fixtures/test-runner',
7475
'test/fixtures/test-runner/*',
7576
'!test/fixtures/test-runner/output',
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
import * as common from '../common/index.mjs';
2+
import assert from 'assert';
3+
import { DOMStorage, Session } from 'node:inspector/promises';
4+
import { pathToFileURL } from 'node:url';
5+
import path from 'node:path';
6+
import process from 'node:process';
7+
8+
{
9+
const session = new Session();
10+
await session.connect();
11+
12+
await session.post('DOMStorage.enable');
13+
14+
const localStorageFileUrl =
15+
pathToFileURL(path.join(process.cwd(), 'localstorage.db')).href;
16+
17+
const { storageKey } = await session.post('Storage.getStorageKey');
18+
assert.strictEqual(
19+
storageKey.toLowerCase(),
20+
localStorageFileUrl.toLowerCase(),
21+
);
22+
23+
for (const isLocalStorage of [true, false]) {
24+
DOMStorage.registerStorage({
25+
isLocalStorage,
26+
storageMap: {
27+
key1: 'value1',
28+
key2: 'value2',
29+
[1]: 2,
30+
[true]: 'booleanKey',
31+
['ключ']: 'значение',
32+
},
33+
});
34+
const result = await session.post('DOMStorage.getDOMStorageItems', {
35+
storageId: {
36+
isLocalStorage,
37+
securityOrigin: 'node-inspector://default-dom-storage',
38+
},
39+
});
40+
const sortedEntries = result.entries.sort((a, b) =>
41+
a[0].localeCompare(b[0]),
42+
);
43+
assert.deepStrictEqual(sortedEntries, [
44+
['1', '2'],
45+
['key1', 'value1'],
46+
['key2', 'value2'],
47+
['true', 'booleanKey'],
48+
['ключ', 'значение'],
49+
]);
50+
}
51+
session.disconnect();
52+
}
53+
54+
{
55+
for (const isLocalStorage of [true, false]) {
56+
const webStorage = isLocalStorage ? localStorage : sessionStorage;
57+
const session = new Session();
58+
webStorage.clear();
59+
await session.connect();
60+
61+
const storageKey = await session.post('Storage.getStorageKey');
62+
await session.post('DOMStorage.enable');
63+
64+
webStorage.setItem('key1', 'value');
65+
webStorage.setItem('key2', 1);
66+
webStorage.setItem('key3', JSON.stringify({ a: 1 }));
67+
webStorage.setItem('ключ', 'значение');
68+
69+
const result = await session.post('DOMStorage.getDOMStorageItems', {
70+
storageId: {
71+
isLocalStorage,
72+
securityOrigin: '',
73+
storageKey: storageKey.storageKey,
74+
},
75+
});
76+
assert.strictEqual(result.entries.length, 4);
77+
const entries = Object.fromEntries(result.entries);
78+
assert.strictEqual(entries.key1, 'value');
79+
assert.strictEqual(entries.key2, '1');
80+
assert.strictEqual(entries.key3, JSON.stringify({ a: 1 }));
81+
assert.strictEqual(entries['ключ'], 'значение');
82+
session.disconnect();
83+
}
84+
}
85+
86+
{
87+
for (const isLocalStorage of [true, false]) {
88+
const webStorage = isLocalStorage ? localStorage : sessionStorage;
89+
webStorage.clear();
90+
const session = new Session();
91+
await session.connect();
92+
await session.post('DOMStorage.enable');
93+
const storageKey = await session.post('Storage.getStorageKey');
94+
session.on(
95+
'DOMStorage.domStorageItemAdded',
96+
common.mustCall(({ params }) => {
97+
assert.strictEqual(params.key, 'key');
98+
assert.strictEqual(params.newValue, 'value');
99+
assert.deepStrictEqual(params.storageId, {
100+
securityOrigin: '',
101+
isLocalStorage,
102+
storageKey: storageKey.storageKey,
103+
});
104+
}),
105+
);
106+
webStorage.setItem('key', 'value');
107+
108+
session.on(
109+
'DOMStorage.domStorageItemUpdated',
110+
common.mustCall(({ params }) => {
111+
assert.strictEqual(params.key, 'key');
112+
assert.strictEqual(params.oldValue, 'value');
113+
assert.strictEqual(params.newValue, 'newValue');
114+
assert.deepStrictEqual(params.storageId, {
115+
securityOrigin: '',
116+
isLocalStorage,
117+
storageKey: storageKey.storageKey,
118+
});
119+
}),
120+
);
121+
122+
webStorage.setItem('key', 'newValue');
123+
124+
session.on(
125+
'DOMStorage.domStorageItemRemoved',
126+
common.mustCall(({ params }) => {
127+
assert.strictEqual(params.key, 'key');
128+
assert.deepStrictEqual(params.storageId, {
129+
securityOrigin: '',
130+
isLocalStorage,
131+
storageKey: storageKey.storageKey,
132+
});
133+
}),
134+
);
135+
136+
webStorage.removeItem('key');
137+
138+
session.on(
139+
'DOMStorage.domStorageItemsCleared',
140+
common.mustCall(({ params }) => {
141+
assert.deepStrictEqual(params.storageId, {
142+
securityOrigin: '',
143+
isLocalStorage,
144+
storageKey: storageKey.storageKey,
145+
});
146+
}),
147+
);
148+
webStorage.clear();
149+
session.disconnect();
150+
}
151+
}
Lines changed: 8 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -1,175 +1,16 @@
1-
// Flags: --inspect=0 --experimental-storage-inspection --localstorage-file=./localstorage.db
21
'use strict';
32

43
const common = require('../common');
54
common.skipIfSQLiteMissing();
65
common.skipIfInspectorDisabled();
6+
const { spawnSyncAndExitWithoutError } = require('../common/child_process');
7+
const fixtures = require('../common/fixtures');
78
const tmpdir = require('../common/tmpdir');
89
tmpdir.refresh();
9-
// Change cwd to tmpdir so that --localstorage-file=./localstorage.db resolves there.
10-
process.chdir(tmpdir.path);
1110

12-
const assert = require('assert');
13-
const { DOMStorage, Session } = require('node:inspector/promises');
14-
const { pathToFileURL } = require('node:url');
15-
const path = require('node:path');
16-
17-
async function testRegisterStorage() {
18-
const session = new Session();
19-
await session.connect();
20-
21-
await session.post('DOMStorage.enable');
22-
23-
const localStorageFileUrl =
24-
pathToFileURL(path.join(tmpdir.path, 'localstorage.db')).href;
25-
26-
const { storageKey } = await session.post('Storage.getStorageKey');
27-
assert.strictEqual(
28-
storageKey.toLowerCase(),
29-
localStorageFileUrl.toLowerCase()
30-
);
31-
32-
await checkStorage(true);
33-
await checkStorage(false);
34-
session.disconnect();
35-
36-
async function checkStorage(isLocalStorage) {
37-
DOMStorage.registerStorage({
38-
isLocalStorage,
39-
storageMap: {
40-
key1: 'value1',
41-
key2: 'value2',
42-
[1]: 2,
43-
[true]: 'booleanKey',
44-
['ключ']: 'значение',
45-
},
46-
});
47-
const result = await session.post('DOMStorage.getDOMStorageItems', {
48-
storageId: {
49-
isLocalStorage,
50-
securityOrigin: 'node-inspector://default-dom-storage',
51-
},
52-
});
53-
const sortedEntries = result.entries.sort((a, b) =>
54-
a[0].localeCompare(b[0]),
55-
);
56-
assert.deepStrictEqual(sortedEntries, [
57-
['1', '2'],
58-
['key1', 'value1'],
59-
['key2', 'value2'],
60-
['true', 'booleanKey'],
61-
['ключ', 'значение'],
62-
]);
63-
}
64-
}
65-
66-
async function testGetData() {
67-
await test(true);
68-
await test(false);
69-
70-
async function test(isLocalStorage) {
71-
const webStorage = isLocalStorage ? localStorage : sessionStorage;
72-
const session = new Session();
73-
webStorage.clear();
74-
await session.connect();
75-
76-
const storageKey = await session.post('Storage.getStorageKey');
77-
await session.post('DOMStorage.enable');
78-
79-
webStorage.setItem('key1', 'value');
80-
webStorage.setItem('key2', 1);
81-
webStorage.setItem('key3', JSON.stringify({ a: 1 }));
82-
webStorage.setItem('ключ', 'значение');
83-
84-
const result = await session.post('DOMStorage.getDOMStorageItems', {
85-
storageId: {
86-
isLocalStorage,
87-
securityOrigin: '',
88-
storageKey: storageKey.storageKey,
89-
},
90-
});
91-
assert.strictEqual(result.entries.length, 4);
92-
const entries = Object.fromEntries(result.entries);
93-
assert.strictEqual(entries.key1, 'value');
94-
assert.strictEqual(entries.key2, '1');
95-
assert.strictEqual(entries.key3, JSON.stringify({ a: 1 }));
96-
assert.strictEqual(entries['ключ'], 'значение');
97-
session.disconnect();
98-
}
99-
}
100-
101-
async function testEvents() {
102-
await test(true);
103-
await test(false);
104-
async function test(isLocalStorage) {
105-
const webStorage = isLocalStorage ? localStorage : sessionStorage;
106-
webStorage.clear();
107-
const session = new Session();
108-
await session.connect();
109-
await session.post('DOMStorage.enable');
110-
const storageKey = await session.post('Storage.getStorageKey');
111-
session.on(
112-
'DOMStorage.domStorageItemAdded',
113-
common.mustCall(({ params }) => {
114-
assert.strictEqual(params.key, 'key');
115-
assert.strictEqual(params.newValue, 'value');
116-
assert.deepStrictEqual(params.storageId, {
117-
securityOrigin: '',
118-
isLocalStorage,
119-
storageKey: storageKey.storageKey,
120-
});
121-
}),
122-
);
123-
webStorage.setItem('key', 'value');
124-
125-
session.on(
126-
'DOMStorage.domStorageItemUpdated',
127-
common.mustCall(({ params }) => {
128-
assert.strictEqual(params.key, 'key');
129-
assert.strictEqual(params.oldValue, 'value');
130-
assert.strictEqual(params.newValue, 'newValue');
131-
assert.deepStrictEqual(params.storageId, {
132-
securityOrigin: '',
133-
isLocalStorage,
134-
storageKey: storageKey.storageKey,
135-
});
136-
}),
137-
);
138-
139-
webStorage.setItem('key', 'newValue');
140-
141-
session.on(
142-
'DOMStorage.domStorageItemRemoved',
143-
common.mustCall(({ params }) => {
144-
assert.strictEqual(params.key, 'key');
145-
assert.deepStrictEqual(params.storageId, {
146-
securityOrigin: '',
147-
isLocalStorage,
148-
storageKey: storageKey.storageKey,
149-
});
150-
}),
151-
);
152-
153-
webStorage.removeItem('key');
154-
155-
session.on(
156-
'DOMStorage.domStorageItemsCleared',
157-
common.mustCall(({ params }) => {
158-
assert.deepStrictEqual(params.storageId, {
159-
securityOrigin: '',
160-
isLocalStorage,
161-
storageKey: storageKey.storageKey,
162-
});
163-
}),
164-
);
165-
webStorage.clear();
166-
session.disconnect();
167-
}
168-
}
169-
170-
async function test() {
171-
await testRegisterStorage();
172-
await testGetData();
173-
await testEvents();
174-
}
175-
test().then(common.mustCall());
11+
spawnSyncAndExitWithoutError(process.execPath, [
12+
'--inspect=0',
13+
'--experimental-storage-inspection',
14+
'--localstorage-file=./localstorage.db',
15+
fixtures.path('test-inspector-dom-storage.mjs'),
16+
], { cwd: tmpdir.path });

0 commit comments

Comments
 (0)