Skip to content

Commit c0d3bc4

Browse files
committed
Make web integration tests functional
1 parent 9b45662 commit c0d3bc4

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

sqlite3_web/lib/src/client.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,9 @@ final class DatabaseClient implements WebSqlite {
281281

282282
if (result.canUseOpfs) {
283283
available.add((StorageMode.opfs, AccessMode.throughSharedWorker));
284-
} else {
284+
} else if (result.sharedCanSpawnDedicated) {
285+
// Only report OPFS as unavailable if we can spawn dedicated workers.
286+
// If we can't, it's known that we can't use OPFS.
285287
_missingFeatures.add(MissingBrowserFeature.fileSystemAccess);
286288
}
287289

sqlite3_web/test/integration_test.dart

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void main() {
7272
for (final browser in Browser.values) {
7373
group(browser.name, () {
7474
late Process driverProcess;
75-
late DriftWebDriver driver;
75+
late TestWebDriver driver;
7676

7777
setUpAll(() async => driverProcess = await browser.spawnDriver());
7878
tearDownAll(() => driverProcess.kill());
@@ -83,8 +83,19 @@ void main() {
8383
uri: browser.driverUri,
8484
);
8585

86-
driver = DriftWebDriver(server, rawDriver);
86+
driver = TestWebDriver(server, rawDriver);
8787
await driver.driver.get('http://localhost:8080/');
88+
89+
while (true) {
90+
try {
91+
// This element is created after main() has completed, make sure
92+
// all the callbacks have been installed.
93+
await driver.driver.findElement(By.id('ready'));
94+
break;
95+
} on NoSuchElementException {
96+
continue;
97+
}
98+
}
8899
});
89100

90101
tearDown(() => driver.driver.quit());
@@ -95,6 +106,16 @@ void main() {
95106
expect(result.missingFeatures, browser.missingFeatures);
96107
expect(result.impls, browser.availableImplementations);
97108
});
109+
110+
for (final (storage, access) in browser.availableImplementations) {
111+
test('$storage through $access', () async {
112+
await driver.openDatabase((storage, access));
113+
await driver.execute('CREATE TABLE foo (bar TEXT);');
114+
final event = driver.waitForUpdate();
115+
await driver.execute("INSERT INTO foo (bar) VALUES ('hello');");
116+
await event;
117+
});
118+
}
98119
});
99120
}
100121
}

sqlite3_web/tool/server.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,11 @@ class TestAssetServer {
9898
}
9999
}
100100

101-
class DriftWebDriver {
101+
class TestWebDriver {
102102
final TestAssetServer server;
103103
final WebDriver driver;
104104

105-
DriftWebDriver(this.server, this.driver);
105+
TestWebDriver(this.server, this.driver);
106106

107107
Future<
108108
({

sqlite3_web/web/main.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ void main() {
3333
print('selected storage: ${database.storage} through ${database.access}');
3434
print('missing features: ${database.features.missingFeatures}');
3535
});
36+
37+
document.body!.children.add(DivElement()..id = 'ready');
3638
}
3739

3840
void _addCallbackForWebDriver(
@@ -105,6 +107,6 @@ Future<JSAny?> _open(String? implementationName) async {
105107
}
106108

107109
Future<JSAny?> _exec(String? sql) async {
108-
database!.execute(sql!);
110+
await database!.execute(sql!);
109111
return null;
110112
}

0 commit comments

Comments
 (0)