package org.jabref.gui; import java.io.IOException; import javax.swing.JButton; import org.jabref.gui.dbproperties.DatabasePropertiesDialog; import org.jabref.gui.preftabs.PreferencesDialog; import org.jabref.testutils.category.GUITests; import org.assertj.swing.core.GenericTypeMatcher; import org.assertj.swing.dependency.jsr305.Nonnull; import org.assertj.swing.fixture.DialogFixture; import org.junit.Test; import org.junit.experimental.categories.Category; import static org.assertj.swing.finder.WindowFinder.findDialog; @Category(GUITests.class) public class GUITest extends AbstractUITest { @Test public void testExit() { exitJabRef(); } @Test public void testNewFile() { newDatabase(); closeDatabase(); exitJabRef(); } @Test public void testCreateBibtexEntry() throws IOException { newDatabase(); mainFrame.menuItemWithPath("BibTeX", "New entry...").click(); findDialog(EntryTypeDialog.class).withTimeout(10_000).using(robot()) .button(new GenericTypeMatcher<JButton>(JButton.class) { @Override protected boolean isMatching(@Nonnull JButton jButton) { return "Book".equals(jButton.getText()); } }).click(); takeScreenshot(mainFrame, "MainWindowWithOneDatabase"); } @Test public void testOpenAndSavePreferences() throws IOException { mainFrame.menuItemWithPath("Options", "Preferences").click(); robot().waitForIdle(); DialogFixture preferencesDialog = findDialog(PreferencesDialog.class).withTimeout(10_000).using(robot()); takeScreenshot(preferencesDialog, "PreferencesDialog"); preferencesDialog.button(new GenericTypeMatcher<JButton>(JButton.class) { @Override protected boolean isMatching(@Nonnull JButton jButton) { return "OK".equals(jButton.getText()); } }).click(); exitJabRef(); } /** * tests different buttons * sometimes this test clicks some buttons twice to reverse their effect and leaves JabRef as it was before */ @Test public void testViewChanges() { newDatabase(); mainFrame.menuItemWithPath("View", "Increase table font size").click(); mainFrame.menuItemWithPath("View", "Decrease table font size").click(); mainFrame.menuItemWithPath("View", "Web search").click(); mainFrame.menuItemWithPath("View", "Web search").click(); mainFrame.menuItemWithPath("View", "Toggle groups interface").click(); mainFrame.menuItemWithPath("View", "Toggle groups interface").click(); mainFrame.menuItemWithPath("View", "Toggle entry preview").click(); mainFrame.menuItemWithPath("View", "Toggle entry preview").click(); mainFrame.menuItemWithPath("View", "Next preview layout").click(); mainFrame.menuItemWithPath("View", "Previous preview layout").click(); mainFrame.menuItemWithPath("View", "Hide/show toolbar").click(); mainFrame.menuItemWithPath("View", "Hide/show toolbar").click(); mainFrame.menuItemWithPath("View", "Focus entry table").click(); closeDatabase(); exitJabRef(); } @Test public void testDatabasePropertiesDialog() throws IOException { newDatabase(); mainFrame.menuItemWithPath("File", "Library properties").click(); robot().waitForIdle(); DialogFixture databasePropertiesDialog = findDialog(DatabasePropertiesDialog.class).withTimeout(10_000).using(robot()); takeScreenshot(databasePropertiesDialog, "DatabasePropertiesDialog"); databasePropertiesDialog.button(new GenericTypeMatcher<JButton>(JButton.class) { @Override protected boolean isMatching(@Nonnull JButton jButton) { return "OK".equals(jButton.getText()); } }).click(); closeDatabase(); exitJabRef(); } }