Index: src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 14886)
+++ src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(working copy)
@@ -195,6 +195,7 @@
             = OsmValidator.getErrorsBySeverityMessageDescription(errors, filterToUse);
 
         final List<TreePath> expandedPaths = new ArrayList<>();
+        final List<TreePath> severityPaths = new ArrayList<>();
         for (Entry<Severity, Map<String, Map<String, List<TestError>>>> entry: errorsBySeverityMessageDescription.entrySet()) {
             Severity severity = entry.getKey();
             Map<String, Map<String, List<TestError>>> errorsByMessageDescription = entry.getValue();
@@ -202,9 +203,11 @@
             // Severity node
             final DefaultMutableTreeNode severityNode = new GroupTreeNode(severity);
             rootNode.add(severityNode);
+            TreePath severityPath = new TreePath(new Object[] {rootNode, severityNode});
+            severityPaths.add(severityPath);
 
             if (oldExpandedRows.contains(severity)) {
-                expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode}));
+                expandedPaths.add(severityPath);
             }
 
             final Map<String, List<TestError>> errorsWithEmptyMessageByDescription = errorsByMessageDescription.get("");
@@ -271,15 +274,24 @@
         }
 
         valTreeModel.setRoot(rootNode);
+        boolean hasExpanded = false;
         for (TreePath path : expandedPaths) {
             this.expandPath(path);
+            hasExpanded = true;
         }
 
         if (selRow >= 0 && selRow < getRowCount()) {
             setSelectionRow(selRow);
             scrollRowToVisible(selRow);
+            hasExpanded = true;
         }
-
+        if (!hasExpanded && !severityPaths.isEmpty()) {
+            for (TreePath path : severityPaths) {
+                expandPath(path);
+                if (getRowCount() > 10)
+                    break;
+            }
+        }
         invalidationListeners.fireEvent(Runnable::run);
     }
 
