@@ -27,13 +27,17 @@ const { Context } = require('../firefox')
2727const { Pages, suite } = require ( '../lib/test' )
2828const { locate } = require ( '../lib/test/resources' )
2929
30- const WEBEXTENSION_EXTENSION_XPI = locate (
31- 'common/extensions/webextensions-selenium-example.xpi'
30+ const EXT_XPI = locate ( 'common/extensions/webextensions-selenium-example.xpi' )
31+ const EXT_UNSIGNED_ZIP = locate (
32+ 'common/extensions/webextensions-selenium-example-unsigned.zip'
3233)
33- const WEBEXTENSION_EXTENSION_ZIP = locate (
34+ const EXT_SIGNED_ZIP = locate (
3435 'common/extensions/webextensions-selenium-example.zip'
3536)
36- const WEBEXTENSION_EXTENSION_DIR = locate (
37+ const EXT_UNSIGNED_DIR = locate (
38+ 'common/extensions/webextensions-selenium-example'
39+ )
40+ const EXT_SIGNED_DIR = locate (
3741 'common/extensions/webextensions-selenium-example'
3842)
3943
6367 await io . mkdir ( extensionsDir )
6468 await io . write (
6569 path . join ( extensionsDir , WEBEXTENSION_EXTENSION_ID ) ,
66- await io . read ( WEBEXTENSION_EXTENSION_XPI )
70+ await io . read ( EXT_XPI )
6771 )
6872 } )
6973
@@ -155,7 +159,7 @@ suite(
155159 describe ( 'addExtensions' , function ( ) {
156160 it ( 'can add extension to brand new profile' , async function ( ) {
157161 let options = new firefox . Options ( )
158- options . addExtensions ( WEBEXTENSION_EXTENSION_XPI )
162+ options . addExtensions ( EXT_XPI )
159163
160164 driver = env . builder ( ) . setFirefoxOptions ( options ) . build ( )
161165
@@ -165,7 +169,7 @@ suite(
165169
166170 it ( 'can add extension to custom profile' , async function ( ) {
167171 let options = new firefox . Options ( )
168- . addExtensions ( WEBEXTENSION_EXTENSION_XPI )
172+ . addExtensions ( EXT_XPI )
169173 . setProfile ( profileWithUserPrefs )
170174
171175 driver = env . builder ( ) . setFirefoxOptions ( options ) . build ( )
@@ -177,7 +181,7 @@ suite(
177181
178182 it ( 'can addExtensions and setPreference' , async function ( ) {
179183 let options = new firefox . Options ( )
180- . addExtensions ( WEBEXTENSION_EXTENSION_XPI )
184+ . addExtensions ( EXT_XPI )
181185 . setPreference ( 'general.useragent.override' , 'foo;bar' )
182186
183187 driver = env . builder ( ) . setFirefoxOptions ( options ) . build ( )
@@ -189,7 +193,7 @@ suite(
189193
190194 it ( 'can load .zip webextensions' , async function ( ) {
191195 let options = new firefox . Options ( )
192- options . addExtensions ( WEBEXTENSION_EXTENSION_ZIP )
196+ options . addExtensions ( EXT_XPI )
193197
194198 driver = env . builder ( ) . setFirefoxOptions ( options ) . build ( )
195199
@@ -230,32 +234,73 @@ suite(
230234 driver = env . builder ( ) . build ( )
231235 } )
232236
233- it ( 'addons can be installed and uninstalled at runtime' , async function ( ) {
234- await driver . get ( Pages . echoPage )
237+ it ( 'installs and uninstalls by xpi file' , async function ( ) {
238+ await driver . get ( Pages . blankPage )
239+ await verifyWebExtensionNotInstalled ( )
240+
241+ let id = await driver . installAddon ( EXT_XPI )
242+
243+ await driver . navigate ( ) . refresh ( )
244+ await verifyWebExtensionWasInstalled ( )
245+
246+ await driver . uninstallAddon ( id )
247+ await driver . navigate ( ) . refresh ( )
248+ await verifyWebExtensionNotInstalled ( )
249+ } )
250+
251+ it ( 'installs and uninstalls by unsigned zip file' , async function ( ) {
252+ await driver . get ( Pages . blankPage )
253+ await verifyWebExtensionNotInstalled ( )
254+
255+ let id = await driver . installAddon ( EXT_UNSIGNED_ZIP , true )
256+
257+ await driver . navigate ( ) . refresh ( )
258+ await verifyWebExtensionWasInstalled ( )
259+
260+ await driver . uninstallAddon ( id )
261+ await driver . navigate ( ) . refresh ( )
262+ await verifyWebExtensionNotInstalled ( )
263+ } )
264+
265+ it ( 'installs and uninstalls by signed zip file' , async function ( ) {
266+ await driver . get ( Pages . blankPage )
267+ await verifyWebExtensionNotInstalled ( )
268+
269+ let id = await driver . installAddon ( EXT_SIGNED_ZIP )
270+
271+ await driver . navigate ( ) . refresh ( )
272+ await verifyWebExtensionWasInstalled ( )
273+
274+ await driver . uninstallAddon ( id )
275+ await driver . navigate ( ) . refresh ( )
276+ await verifyWebExtensionNotInstalled ( )
277+ } )
278+
279+ it ( 'installs and uninstalls by unsigned directory' , async function ( ) {
280+ await driver . get ( Pages . blankPage )
235281 await verifyWebExtensionNotInstalled ( )
236282
237- let id = await driver . installAddon ( WEBEXTENSION_EXTENSION_XPI )
238- await driver . sleep ( 1000 ) // Give extension time to install (yuck).
283+ let id = await driver . installAddon ( EXT_UNSIGNED_DIR , true )
239284
240- await driver . get ( Pages . echoPage )
285+ await driver . navigate ( ) . refresh ( )
241286 await verifyWebExtensionWasInstalled ( )
242287
243288 await driver . uninstallAddon ( id )
244- await driver . get ( Pages . echoPage )
289+ await driver . navigate ( ) . refresh ( )
245290 await verifyWebExtensionNotInstalled ( )
246291 } )
247292
248- it ( 'unpacked addons can be installed and uninstalled at runtime ' , async function ( ) {
249- await driver . get ( Pages . echoPage )
293+ it ( 'installs and uninstalls by signed directory ' , async function ( ) {
294+ await driver . get ( Pages . blankPage )
250295 await verifyWebExtensionNotInstalled ( )
251296
252- let id = await driver . installAddon ( WEBEXTENSION_EXTENSION_DIR , true )
297+ let id = await driver . installAddon ( EXT_SIGNED_DIR , true )
253298
254- await driver . get ( Pages . echoPage )
299+ await driver . navigate ( ) . refresh ( )
255300 await verifyWebExtensionWasInstalled ( )
256301
257302 await driver . uninstallAddon ( id )
258- await driver . get ( Pages . echoPage )
303+ await driver . navigate ( ) . refresh ( )
259304 await verifyWebExtensionNotInstalled ( )
260305 } )
261306 } )
0 commit comments