Unable to find component using matcher | Fail on Ubuntu
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- desktop-dev, testing
Línea de trabajo
Empieza reproduciendo las pruebas GUI que fallan en Ubuntu con Java 8 u 11 y AssertJ Swing 3.17.0, utilizando la configuración de AccountSwingView y la búsqueda del panel con pestañas que se muestran en el informe. Investiga por qué no se muestra panelDisplayedAccounts cuando se ejecuta el matcher; se considera terminado cuando la prueba afectada pasa de forma fiable en Ubuntu o se documenta la limitación de plataforma restante.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi, i have to test my java swing ui with assertj swing, on my mac i have no error but on latest and previous ubuntu version, i have this issue Unable to find component using matcher (the stacktrace is at the end of this post)
Running on Java 8 or 11 same issue, assertj swing version 3.17.0
I have to set timeout before testing ui?
Here a snippet code of my tests
@Before
public void onSetUp() {
MockitoAnnotations.initMocks(this);
GuiActionRunner.execute(() -> {
accountSwingView = new AccountSwingView();
accountSwingView.setAccountController(accountController);
return accountSwingView;
});
window = new FrameFixture(robot(), accountSwingView);
window.show(); // shows the frame to test
}
@Test
@GUITest
public void testModifyPasswordButtonDelegateToController() {
final String UPDATED_PASSWORD = "newPassword";
List<Account> accounts = Arrays.asList(new Account("github.com", new Credential("giulio", "passgiulio")));
accountSwingView.setListAccountTableData(accounts);
// Verify modifyUsername called when action performed on Modify Password Button
window.tabbedPane("tabbedPanel").selectTab(1);
window.panel("panelDisplayedAccounts").focus();
window.scrollPane("scrollPaneAccounts").focus();
window.table("tableDisplayedAccounts").focus();
window.table("tableDisplayedAccounts").selectRows(0);
window.textBox("textFieldUpdateCell").enterText(UPDATED_PASSWORD);
window.button("buttonModifyPassword").click();
verify(accountController).modifyPassword(new Account("github.com", new Credential("giulio", "passgiulio")),
UPDATED_PASSWORD);
}
@Test
@GUITest
public void testShowAccountsDisplayCorrectAccountsIntoTable() {
Account firstAccount = new Account("github.com", new Credential("giulio", "passgiulio"));
Account secondAccount = new Account("github.com", new Credential("remeic", "remegiulio"));
List<Account> accountDisplayed = Arrays.asList(firstAccount, secondAccount);
accountSwingView.showAccounts(accountDisplayed);
window.tabbedPane("tabbedPanel").selectTab(1);
window.panel("panelDisplayedAccounts").focus();
List<Account> accountList = getAccountsList(window.table("tableDisplayedAccounts").contents());
assertThat(accountList).containsAll(accountDisplayed);
}
@Test
@GUITest
public void testAccountIsModifiedShowLabelWithSuccessInfo() {
window.tabbedPane("tabbedPanel").selectTab(1);
window.panel("panelDisplayedAccounts").focus();
window.label("labelOperationResult").requireDisabled();
window.label("labelOperationResult").requireText("");
accountSwingView.accountIsModified();
window.label("labelOperationResult").requireEnabled();
window.label("labelOperationResult").requireText("Account Modified!");
}
Unable to find component using matcher org.assertj.swing.core.NameMatcher[name='panelDisplayedAccounts', type=javax.swing.JPanel, requireShowing=true].
Component hierarchy:
dev.justgiulio.passwordmanager.view.swing.AccountSwingView[name='frame12', title='Password Manager', enabled=true, visible=true, showing=true]
javax.swing.JRootPane[]
javax.swing.JPanel[name='null.glassPane']
javax.swing.JLayeredPane[]
javax.swing.JPanel[name='null.contentPane']
javax.swing.JTabbedPane[name='tabbedPanel', selectedTabIndex=0, selectedTabTitle='Add | Generate Password', tabCount=2, tabTitles=["Add | Generate Password", "Saved Password"], enabled=true, visible=true, showing=true
javax.swing.JPanel[name='panelGeneratePassword']
javax.swing.JPanel[name=null]
javax.swing.JButton[name='buttonSaveAccount', text='Save', enabled=false, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Site', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='New Account', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldSiteName', text='', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldUsername', text='', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldPassword', text='', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Username', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Password', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name='labelErrorMessage', text='', enabled=false, visible=true, showing=true]
javax.swing.JLabel[name='labelAccountAdded', text='', enabled=false, visible=true, showing=true]
javax.swing.JSeparator[,321,11,2x326,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JPanel[name=null]
javax.swing.JLabel[name=null, text='Strength', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Passowrd Generator', enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonLowStrength', text='Low', selected=false, enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonMediumStrength', text='Medium', selected=false, enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonHighStrength', text='High', selected=true, enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Length', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldGeneratedPassword', text='', enabled=true, visible=true, showing=true]
javax.swing.JButton[name='buttonGeneratePassword', text='Generate', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Generated Password', enabled=true, visible=true, showing=true]
javax.swing.JSlider[name='sliderPasswordLength', value=8, minimum=8, maximum=32, enabled=true, visible=true, showing=true]
javax.swing.JPanel[name='panelDisplayedAccounts']
javax.swing.JLabel[name=null, text='Accounts', enabled=true, visible=true, showing=false]
javax.swing.JButton[name='buttonFindAllAccounts', text='Find All', enabled=true, visible=true, showing=false]
javax.swing.JSeparator[,115,46,21x27,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JLabel[name=null, text='Text to FInd', enabled=true, visible=true, showing=false]
javax.swing.JTextField[name='textFieldSearchText', text='', enabled=true, visible=true, showing=false]
javax.swing.JButton[name='buttonFindBySiteAccounts', text='Find by Site', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonFindByUsernameAccounts', text='Find By Username', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonFindByPasswordAccounts', text='Find By Password', enabled=false, visible=true, showing=false]
javax.swing.JScrollPane[name='scrollPaneAccounts', enabled=true, visible=true, showing=false]
javax.swing.JViewport[,1,20,928x192,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false]
javax.swing.JTable[name='tableDisplayedAccounts', rowCount=0, columnCount=3, enabled=true, visible=true, showing=false]
javax.swing.CellRendererPane[,0,0,0x0,hidden]
javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=0, enabled=true, visible=false, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=928, enabled=true, visible=false, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.JViewport[,1,1,928x19,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false]
javax.swing.table.JTableHeader[,0,0,928x19,alignmentX=0.0,alignmentY=0.0,border=,flags=16777544,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true]
javax.swing.CellRendererPane[,0,0,0x0,hidden]
javax.swing.JButton[name='buttonDeleteAccount', text='Delete', enabled=false, visible=true, showing=false]
javax.swing.JSeparator[,99,311,2x41,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JTextField[name='textFieldUpdateCell', text='', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonModifyUsername', text='Modify Username', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonModifyPassword', text='Modify Password', enabled=false, visible=true, showing=false]
javax.swing.JLabel[name='labelOperationResult', text='', enabled=false, visible=true, showing=false]
javax.swing.JLabel[name=null, text='Password Manager | Giulio Fagioli 6006222', enabled=true, visible=true, showing=true]
org.assertj.swing.exception.ComponentLookupException
Unable to find component using matcher org.assertj.swing.core.NameMatcher[name='panelDisplayedAccounts', type=javax.swing.JPanel, requireShowing=true].
Component hierarchy:
dev.justgiulio.passwordmanager.view.swing.AccountSwingView[name='frame12', title='Password Manager', enabled=true, visible=true, showing=true]
javax.swing.JRootPane[]
javax.swing.JPanel[name='null.glassPane']
javax.swing.JLayeredPane[]
javax.swing.JPanel[name='null.contentPane']
javax.swing.JTabbedPane[name='tabbedPanel', selectedTabIndex=0, selectedTabTitle='Add | Generate Password', tabCount=2, tabTitles=["Add | Generate Password", "Saved Password"], enabled=true, visible=true, showing=true
javax.swing.JPanel[name='panelGeneratePassword']
javax.swing.JPanel[name=null]
javax.swing.JButton[name='buttonSaveAccount', text='Save', enabled=false, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Site', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='New Account', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldSiteName', text='', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldUsername', text='', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldPassword', text='', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Username', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Password', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name='labelErrorMessage', text='', enabled=false, visible=true, showing=true]
javax.swing.JLabel[name='labelAccountAdded', text='', enabled=false, visible=true, showing=true]
javax.swing.JSeparator[,321,11,2x326,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JPanel[name=null]
javax.swing.JLabel[name=null, text='Strength', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Passowrd Generator', enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonLowStrength', text='Low', selected=false, enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonMediumStrength', text='Medium', selected=false, enabled=true, visible=true, showing=true]
javax.swing.JRadioButton[name='radioButtonHighStrength', text='High', selected=true, enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Length', enabled=true, visible=true, showing=true]
javax.swing.JTextField[name='textFieldGeneratedPassword', text='', enabled=true, visible=true, showing=true]
javax.swing.JButton[name='buttonGeneratePassword', text='Generate', enabled=true, visible=true, showing=true]
javax.swing.JLabel[name=null, text='Generated Password', enabled=true, visible=true, showing=true]
javax.swing.JSlider[name='sliderPasswordLength', value=8, minimum=8, maximum=32, enabled=true, visible=true, showing=true]
javax.swing.JPanel[name='panelDisplayedAccounts']
javax.swing.JLabel[name=null, text='Accounts', enabled=true, visible=true, showing=false]
javax.swing.JButton[name='buttonFindAllAccounts', text='Find All', enabled=true, visible=true, showing=false]
javax.swing.JSeparator[,115,46,21x27,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JLabel[name=null, text='Text to FInd', enabled=true, visible=true, showing=false]
javax.swing.JTextField[name='textFieldSearchText', text='', enabled=true, visible=true, showing=false]
javax.swing.JButton[name='buttonFindBySiteAccounts', text='Find by Site', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonFindByUsernameAccounts', text='Find By Username', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonFindByPasswordAccounts', text='Find By Password', enabled=false, visible=true, showing=false]
javax.swing.JScrollPane[name='scrollPaneAccounts', enabled=true, visible=true, showing=false]
javax.swing.JViewport[,1,20,928x192,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false]
javax.swing.JTable[name='tableDisplayedAccounts', rowCount=0, columnCount=3, enabled=true, visible=true, showing=false]
javax.swing.CellRendererPane[,0,0,0x0,hidden]
javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=0, enabled=true, visible=false, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=928, enabled=true, visible=false, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true, showing=false]
javax.swing.JViewport[,1,1,928x19,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=,scrollUnderway=false]
javax.swing.table.JTableHeader[,0,0,928x19,alignmentX=0.0,alignmentY=0.0,border=,flags=16777544,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true]
javax.swing.CellRendererPane[,0,0,0x0,hidden]
javax.swing.JButton[name='buttonDeleteAccount', text='Delete', enabled=false, visible=true, showing=false]
javax.swing.JSeparator[,99,311,2x41,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=VERTICAL]
javax.swing.JTextField[name='textFieldUpdateCell', text='', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonModifyUsername', text='Modify Username', enabled=false, visible=true, showing=false]
javax.swing.JButton[name='buttonModifyPassword', text='Modify Password', enabled=false, visible=true, showing=false]
javax.swing.JLabel[name='labelOperationResult', text='', enabled=false, visible=true, showing=false]
javax.swing.JLabel[name=null, text='Password Manager | Giulio Fagioli 6006222', enabled=true, visible=true, showing=true]
at dev.justgiulio.passwordmanager.view.AccountSwingViewTest.testAccountIsModifiedResetTextField(AccountSwingViewTest.java:297)
- Lenguaje dominante
- Java
- Estrellas
- 121
- Forks
- 52
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de assertj/assertj-swing
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
assertj/assertj-swing#279 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
assertj/assertj-swing#278 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
assertj/assertj-swing#276 · 1 comentario ·
-
Update unit test to avoid deprecated `ExpectedException.none()` by using `Assert.assertThrows()` Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
assertj/assertj-swing#275 ·
-
how to test when headless? Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
assertj/assertj-swing#277 · 1 comentario ·
Todos los issues de assertj/assertj-swing
Issues similares
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Abiertoarea/plugin
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
kestra-io/plugin-kestra#190 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Add canonical URLs and a sitemap Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/rocketmq-dashboard#5064 ·