// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import '../widgets/semantics_tester.dart'; void main() { testWidgets('Traversal order handles touching elements', (WidgetTester tester) async { final SemanticsTester semantics = SemanticsTester(tester); await tester.pumpWidget( MaterialApp( home: Column( children: List<Widget>.generate(3, (int column) { return Row( children: List<Widget>.generate(3, (int row) { return Semantics( child: SizedBox( width: 50.0, height: 50.0, child: Text('$column - $row'), ), ); }), ); }), ), ), ); final TestSemantics expected = TestSemantics.root( children: <TestSemantics>[ TestSemantics( id: 1, textDirection: TextDirection.ltr, children: <TestSemantics>[ TestSemantics( id: 2, children: <TestSemantics>[ TestSemantics( id: 3, flags: <SemanticsFlag>[SemanticsFlag.scopesRoute], children: <TestSemantics>[ TestSemantics( id: 4, label: '0 - 0', textDirection: TextDirection.ltr, ), TestSemantics( id: 5, label: '0 - 1', textDirection: TextDirection.ltr, ), TestSemantics( id: 6, label: '0 - 2', textDirection: TextDirection.ltr, ), TestSemantics( id: 7, label: '1 - 0', textDirection: TextDirection.ltr, ), TestSemantics( id: 8, label: '1 - 1', textDirection: TextDirection.ltr, ), TestSemantics( id: 9, label: '1 - 2', textDirection: TextDirection.ltr, ), TestSemantics( id: 10, label: '2 - 0', textDirection: TextDirection.ltr, ), TestSemantics( id: 11, label: '2 - 1', textDirection: TextDirection.ltr, ), TestSemantics( id: 12, label: '2 - 2', textDirection: TextDirection.ltr, ), ], ), ], ), ], ), ], ); expect(semantics, hasSemantics(expected, ignoreRect: true, ignoreTransform: true)); semantics.dispose(); }); }