Skip to content

Instantly share code, notes, and snippets.

View gauntface's full-sized avatar
🤓
Mon-Fri: Working. Sat-Sun: Not Working.

Matt Gaunt-Seo gauntface

🤓
Mon-Fri: Working. Sat-Sun: Not Working.
View GitHub Profile
it('should register install, activate and fetch event listeners', function() {
const eventsListenedTo = [];
global.self = {
// Mock methods here
addEventListener: (eventName, cb) => {
eventsListenedTo.push(eventName);
},
};
const myServiceWorkerLib = new Lib();
myServiceWorkerLib.setUpEventListeners();
self.addEventListener('push', function(event) {
let pushData = null;
if (event.data) {
pushData = event.data.text();
}
// Send message to page
const promiseChain = self.clients.matchAll({
includeUncontrolled: true
})
navigator.serviceWorker.addEventListener('message', function(event) {
// Service worker received a push message
// TODO: Perform assertions / check test passed.
});
const webdriverChrome = require('selenium-webdriver/chrome');
const notificationPermission = {};
notificationPermission[testServerAddress + ',*'] = {
setting: 1,
};
const chromePreferences = {
profile: {
content_settings: {
exceptions: {
const webdriverFirefox = require(‘selenium-webdriver/firefox’);
const ffProfile = new webdriverFirefox.Profile();
ffProfile.setPreference('dom.push.testing.ignorePermission', true);
ffProfile.setPreference('notification.prompt.testing', true);
ffProfile.setPreference('notification.prompt.testing.allow', true);
Const options = new webdriverFirefox.Options();
options.setProfile(ffProfile);
const builder = new webdriver
.Builder()
app.use('/', express.static(rootDirectory, {
setHeaders: (res) => {
res.setHeader('Service-Worker-Allowed', '/');
},
}));
app.get('/test/iframe/:random', function(req, res) {
res.sendFile(path.join(__dirname, 'test-iframe.html'));
});
// OK when ‘Service-Worker-Allowed’ header is set to ‘/’
navigator.serviceWorker.register(‘/blog/sw.js’, {scope: ‘/’});
// OK
navigator.serviceWorker.register(‘/blog/sw.js’, {scope: ‘/blog/article/’});
// Not OK
navigator.serviceWorker.register(‘/blog/sw.js’, {scope: ‘/’});
// Not OK
navigator.serviceWorker.register(‘/blog/sw.js’, {scope: ‘/about/’});
navigator.serviceWorker.register('/sw.js', {scope: '/blog/'});