@Test
	public void testCreateSharedProject() {
		try {
			// start a local server
			startServer();

			DockingActionIf action = getAction("New Project");
			performAction(action, false);
			waitForSwing();

			WizardDialog wm = waitForDialogComponent(WizardDialog.class);
			assertNotNull(wm);

			ProjectTypePanel typePanel = findComponent(wm, ProjectTypePanel.class);
			assertNotNull(typePanel);
			final JRadioButton rb =
				(JRadioButton) findAbstractButtonByText(typePanel, "Shared Project");
			assertNotNull(rb);
			assertTrue(!rb.isSelected());

			SwingUtilities.invokeAndWait(() -> rb.setSelected(true));
			waitForSwing();

			JButton nextButton = findButtonByText(wm, "Next >>");
			assertNotNull(nextButton);
			assertTrue(nextButton.isEnabled());
			JButton finishButton = findButtonByText(wm, "Finish");
			assertNotNull(finishButton);
			assertTrue(!finishButton.isEnabled());

			pressButton(nextButton, true);

			ServerInfoPanel serverPanel = findComponent(wm, ServerInfoPanel.class);
			assertNotNull(serverPanel);

			final JTextField serverField =
				(JTextField) findComponentByName(serverPanel, "Server Name");
			final JTextField portNumberField =
				(JTextField) findComponentByName(serverPanel, "Port Number");
			assertNotNull(serverField);
			assertNotNull(portNumberField);

			SwingUtilities.invokeAndWait(() -> {
				serverField.setText(LOCALHOST);
				portNumberField.setText(Integer.toString(SERVER_PORT));
			});
			waitForSwing();

			assertTrue(nextButton.isEnabled());
			assertTrue(!finishButton.isEnabled());

			pressButton(nextButton);

			// next panel should be the repository panel
			RepositoryPanel repPanel = findComponent(wm, RepositoryPanel.class);
			assertNotNull(repPanel);

			JRadioButton existingRb =
				(JRadioButton) findAbstractButtonByText(repPanel, "Existing Repository");
			assertNotNull(existingRb);
			assertTrue(existingRb.isSelected());

			// create a new repository
			final JRadioButton createRb =
				(JRadioButton) findAbstractButtonByText(repPanel, "Create Repository");
			assertNotNull(createRb);
			assertTrue(!createRb.isSelected());
			final JTextField repNameField = findComponent(repPanel, JTextField.class);
			assertNotNull(repNameField);
			assertTrue(!repNameField.isEnabled());

			JList<?> repList = findComponent(repPanel, JList.class);
			assertNotNull(repList);
			assertTrue(repList.isEnabled());

			pressButton(createRb, true);
			assertTrue(!existingRb.isSelected());
			assertTrue(repNameField.isEnabled());
			assertTrue(!repList.isEnabled());
			assertTrue(!nextButton.isEnabled());
			assertTrue(!finishButton.isEnabled());

			SwingUtilities.invokeAndWait(() -> repNameField.setText("TestRepository"));
			waitForSwing();
			assertTrue(nextButton.isEnabled());
			assertTrue(!finishButton.isEnabled());

			pressButton(nextButton, true);
			assertTrue(
				"Next button did not become enabled - status message: " + wm.getStatusMessage(),
				nextButton.isEnabled());

			// next panel should be user access panel
			ProjectAccessPanel accessPanel = findComponent(wm, ProjectAccessPanel.class);
			assertNotNull(accessPanel);

			assertTrue(nextButton.isEnabled());
			assertTrue(
				"Finish button did not become enabled - status message: " + wm.getStatusMessage(),
				finishButton.isEnabled());

			// next panel is project location panel
			pressButton(nextButton, true);
			assertTrue(!nextButton.isEnabled());

			SelectProjectPanel projPanel = findComponent(wm, SelectProjectPanel.class);
			assertNotNull(projPanel);

			JTextField dirField = (JTextField) findComponentByName(projPanel, "Project Directory");
			assertNotNull(dirField);
			assertTrue(dirField.getText().length() > 0);

			final JTextField projField =
				(JTextField) findComponentByName(projPanel, "Project Name");
			assertNotNull(projField);
			assertEquals("TestRepository", projField.getText());

			SwingUtilities.invokeAndWait(() -> projField.setText("ProjectTest"));
			waitForSwing();
			assertTrue(finishButton.isEnabled());
			assertTrue(!nextButton.isEnabled());

			pressButton(finishButton, true);
			Thread.sleep(500);
			waitForSwing();

			Project project = frontEndTool.getProject();
			assertNotNull(project);
			ProjectLocator url = project.getProjectLocator();
			assertEquals("ProjectTest", url.getName());
		}
		catch (Exception e) {
			e.printStackTrace();
			org.junit.Assert.fail(e.toString());
		}
	}
Test for the New Project Wizard.
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/NewProjectWizardTest.java