Bug 1558761 [wpt PR 17285] - Service worker: self.serviceWorker, a=testonly

Automatic update from web-platform-tests
Service worker: self.serviceWorker (#17285)

* Tests for self.serviceWorker

* Don't need `self`

* Add read only test

* Adding comments & test the object doesn't change

* Swap order

--

wpt-commits: 3725067ef0328c998be2ba93dbaeb0579586fccd
wpt-pr: 17285
This commit is contained in:
Jake Archibald 2019-07-19 12:38:12 +00:00 коммит произвёл James Graham
Родитель e585e10cd2
Коммит 9019f4daff
1 изменённых файлов: 53 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,53 @@
// META: title=serviceWorker on service worker global
// META: global=!default,serviceworker
test(() => {
assert_equals(registration.installing, null, 'registration.installing');
assert_equals(registration.waiting, null, 'registration.waiting');
assert_equals(registration.active, null, 'registration.active');
assert_true('serviceWorker' in self, 'self.serviceWorker exists');
assert_equals(serviceWorker.state, 'parsed', 'serviceWorker.state');
assert_readonly(self, 'serviceWorker', `self.serviceWorker is read only`);
}, 'First run');
// Cache this for later tests.
const initialServiceWorker = self.serviceWorker;
async_test((t) => {
assert_true('serviceWorker' in self, 'self.serviceWorker exists');
serviceWorker.postMessage({ messageTest: true });
// The rest of the rest runs once we receive the above message.
addEventListener('message', t.step_func((event) => {
// Ignore unrelated messages.
if (!event.data.messageTest) return;
assert_equals(event.source, serviceWorker, 'event.source');
t.done();
}));
}, 'Can post message to self during startup');
// The test is registered now so there isn't a race condition when collecting tests, but the asserts
// don't happen until the 'install' event fires.
async_test((t) => {
addEventListener('install', t.step_func_done(() => {
assert_true('serviceWorker' in self, 'self.serviceWorker exists');
assert_equals(serviceWorker, initialServiceWorker, `self.serviceWorker hasn't changed`);
assert_equals(registration.installing, serviceWorker, 'registration.installing');
assert_equals(registration.waiting, null, 'registration.waiting');
assert_equals(registration.active, null, 'registration.active');
assert_equals(serviceWorker.state, 'installing', 'serviceWorker.state');
}));
}, 'During install');
// The test is registered now so there isn't a race condition when collecting tests, but the asserts
// don't happen until the 'activate' event fires.
async_test((t) => {
addEventListener('activate', t.step_func_done(() => {
assert_true('serviceWorker' in self, 'self.serviceWorker exists');
assert_equals(serviceWorker, initialServiceWorker, `self.serviceWorker hasn't changed`);
assert_equals(registration.installing, null, 'registration.installing');
assert_equals(registration.waiting, null, 'registration.waiting');
assert_equals(registration.active, serviceWorker, 'registration.active');
assert_equals(serviceWorker.state, 'activating', 'serviceWorker.state');
}));
}, 'During activate');