@Test public void testBasicConventionPlugin() throws IOException, URISyntaxException { File jar = new PluginJarBuilder("ConventionZip") .addFormattedResource( "atlassian-extension.json", "{'key' : 'test-convention',", " 'version' : '1'", "}") .addResource("js/", "") .addResource("js/test/", "") .addFile( "js/test/foo.js", new File(getClass().getResource("/archetype/main.js").toURI())) .addResource("css/", "") .addFile( "css/test-convention.css", new File(getClass().getResource("/archetype/main.css").toURI())) .addResource("images/", "") .addFile( "images/projectavatar.png", new File(getClass().getResource("/archetype/projectavatar.png").toURI())) .addResource("ui/", "") .addFile( "ui/web-items.json", new File(getClass().getResource("/archetype/web-items.json").toURI())) .buildWithNoManifest(); File zip = new File(jar.getPath() + ".zip"); FileUtils.moveFile(jar, zip); product .visit(SpeakeasyUserPage.class) .openInstallDialog() .uploadPlugin(zip) .enablePlugin("test-convention"); SpeakeasyUserPage page = product.visit(SpeakeasyUserPage.class); ExampleBanner banner = product.getPageBinder().bind(ExampleBanner.class); assertTrue(banner.isFooVisible()); assertTrue(banner.isFooImageLoaded()); assertEquals("Yahoo", banner.getYahooLinkText()); assertFalse(banner.isBarVisible()); assertTrue(banner.isBarImageLoaded()); assertEquals( asList( "css/test-convention.css", "images/projectavatar.png", "js/test/foo.js", "ui/web-items.json", "atlassian-extension.json"), page.openEditDialog("test-convention").getFileNames()); page.uninstallPlugin("test-convention"); }