mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[web] Unskip some paragraph tests that are passing now (#162537)
Closes https://github.com/flutter/flutter/issues/83129 Closes https://github.com/flutter/flutter/issues/61020 Closes https://github.com/flutter/flutter/issues/61021
This commit is contained in:
parent
041d5246f7
commit
a612fda649
@ -428,10 +428,7 @@ void main() {
|
|||||||
pumpFrame(phase: EnginePhase.compositingBits);
|
pumpFrame(phase: EnginePhase.compositingBits);
|
||||||
|
|
||||||
expect(editable, paintsExactlyCountTimes(#drawRRect, 0));
|
expect(editable, paintsExactlyCountTimes(#drawRRect, 0));
|
||||||
|
});
|
||||||
// TODO(yjbanov): ahem.ttf doesn't have Chinese glyphs, making this test
|
|
||||||
// sensitive to browser/OS when running in web mode:
|
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/83129
|
|
||||||
|
|
||||||
test('text is painted above selection', () {
|
test('text is painted above selection', () {
|
||||||
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
||||||
@ -810,51 +807,44 @@ void main() {
|
|||||||
expect(editable.hasFocus, false);
|
expect(editable.hasFocus, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test(
|
test('has correct maxScrollExtent', () {
|
||||||
'has correct maxScrollExtent',
|
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
||||||
() {
|
EditableText.debugDeterministicCursor = true;
|
||||||
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
|
||||||
EditableText.debugDeterministicCursor = true;
|
|
||||||
|
|
||||||
final RenderEditable editable = RenderEditable(
|
final RenderEditable editable = RenderEditable(
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
backgroundCursorColor: Colors.grey,
|
backgroundCursorColor: Colors.grey,
|
||||||
textDirection: TextDirection.ltr,
|
textDirection: TextDirection.ltr,
|
||||||
cursorColor: const Color.fromARGB(0xFF, 0xFF, 0x00, 0x00),
|
cursorColor: const Color.fromARGB(0xFF, 0xFF, 0x00, 0x00),
|
||||||
offset: ViewportOffset.zero(),
|
offset: ViewportOffset.zero(),
|
||||||
textSelectionDelegate: delegate,
|
textSelectionDelegate: delegate,
|
||||||
text: const TextSpan(
|
text: const TextSpan(
|
||||||
text:
|
text:
|
||||||
'撒地方加咖啡哈金凤凰卡号方式剪坏算法发挥福建垃\nasfjafjajfjaslfjaskjflasjfksajf撒分开建安路口附近拉设\n计费可使肌肤撒附近埃里克圾房卡设计费"',
|
'撒地方加咖啡哈金凤凰卡号方式剪坏算法发挥福建垃\nasfjafjajfjaslfjaskjflasjfksajf撒分开建安路口附近拉设\n计费可使肌肤撒附近埃里克圾房卡设计费"',
|
||||||
style: TextStyle(height: 1.0, fontSize: 10.0, fontFamily: 'Roboto'),
|
style: TextStyle(height: 1.0, fontSize: 10.0, fontFamily: 'Roboto'),
|
||||||
),
|
),
|
||||||
startHandleLayerLink: LayerLink(),
|
startHandleLayerLink: LayerLink(),
|
||||||
endHandleLayerLink: LayerLink(),
|
endHandleLayerLink: LayerLink(),
|
||||||
selection: const TextSelection.collapsed(offset: 4, affinity: TextAffinity.upstream),
|
selection: const TextSelection.collapsed(offset: 4, affinity: TextAffinity.upstream),
|
||||||
);
|
);
|
||||||
|
|
||||||
editable.layout(BoxConstraints.loose(const Size(100.0, 1000.0)));
|
editable.layout(BoxConstraints.loose(const Size(100.0, 1000.0)));
|
||||||
expect(editable.size, equals(const Size(100, 20)));
|
expect(editable.size, equals(const Size(100, 20)));
|
||||||
expect(editable.maxLines, equals(2));
|
expect(editable.maxLines, equals(2));
|
||||||
expect(editable.maxScrollExtent, equals(90));
|
expect(editable.maxScrollExtent, equals(90));
|
||||||
|
|
||||||
editable.layout(BoxConstraints.loose(const Size(150.0, 1000.0)));
|
editable.layout(BoxConstraints.loose(const Size(150.0, 1000.0)));
|
||||||
expect(editable.maxScrollExtent, equals(50));
|
expect(editable.maxScrollExtent, equals(50));
|
||||||
|
|
||||||
editable.layout(BoxConstraints.loose(const Size(200.0, 1000.0)));
|
editable.layout(BoxConstraints.loose(const Size(200.0, 1000.0)));
|
||||||
expect(editable.maxScrollExtent, equals(40));
|
expect(editable.maxScrollExtent, equals(40));
|
||||||
|
|
||||||
editable.layout(BoxConstraints.loose(const Size(500.0, 1000.0)));
|
editable.layout(BoxConstraints.loose(const Size(500.0, 1000.0)));
|
||||||
expect(editable.maxScrollExtent, equals(10));
|
expect(editable.maxScrollExtent, equals(10));
|
||||||
|
|
||||||
editable.layout(BoxConstraints.loose(const Size(1000.0, 1000.0)));
|
editable.layout(BoxConstraints.loose(const Size(1000.0, 1000.0)));
|
||||||
expect(editable.maxScrollExtent, equals(10));
|
expect(editable.maxScrollExtent, equals(10));
|
||||||
// TODO(yjbanov): This test is failing in the Dart HHH-web bot and
|
});
|
||||||
// needs additional investigation before it can be reenabled.
|
|
||||||
},
|
|
||||||
// https://github.com/flutter/flutter/issues/93691
|
|
||||||
skip: const bool.fromEnvironment('DART_HHH_BOT'),
|
|
||||||
);
|
|
||||||
|
|
||||||
test('getEndpointsForSelection handles empty characters', () {
|
test('getEndpointsForSelection handles empty characters', () {
|
||||||
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
final TextSelectionDelegate delegate = _FakeEditableTextState();
|
||||||
@ -1505,7 +1495,7 @@ void main() {
|
|||||||
final Rect composingRect =
|
final Rect composingRect =
|
||||||
editable.getRectForComposingRange(const TextRange(start: 4, end: 5))!;
|
editable.getRectForComposingRange(const TextRange(start: 4, end: 5))!;
|
||||||
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 54.0, 14.0));
|
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 54.0, 14.0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('able to render multiple WidgetSpans', () async {
|
test('able to render multiple WidgetSpans', () async {
|
||||||
final TextSelectionDelegate delegate =
|
final TextSelectionDelegate delegate =
|
||||||
@ -1550,7 +1540,7 @@ void main() {
|
|||||||
final Rect composingRect =
|
final Rect composingRect =
|
||||||
editable.getRectForComposingRange(const TextRange(start: 4, end: 7))!;
|
editable.getRectForComposingRange(const TextRange(start: 4, end: 7))!;
|
||||||
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 82.0, 14.0));
|
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 82.0, 14.0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('able to render WidgetSpans with line wrap', () async {
|
test('able to render WidgetSpans with line wrap', () async {
|
||||||
final TextSelectionDelegate delegate =
|
final TextSelectionDelegate delegate =
|
||||||
@ -1599,7 +1589,7 @@ void main() {
|
|||||||
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 68.0, 14.0));
|
expect(composingRect, const Rect.fromLTRB(40.0, 0.0, 68.0, 14.0));
|
||||||
composingRect = editable.getRectForComposingRange(const TextRange(start: 6, end: 7))!;
|
composingRect = editable.getRectForComposingRange(const TextRange(start: 6, end: 7))!;
|
||||||
expect(composingRect, const Rect.fromLTRB(0.0, 14.0, 14.0, 28.0));
|
expect(composingRect, const Rect.fromLTRB(0.0, 14.0, 14.0, 28.0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('able to render WidgetSpans with line wrap alternating spans', () async {
|
test('able to render WidgetSpans with line wrap alternating spans', () async {
|
||||||
final TextSelectionDelegate delegate =
|
final TextSelectionDelegate delegate =
|
||||||
@ -1657,7 +1647,7 @@ void main() {
|
|||||||
expect(composingRect, const Rect.fromLTRB(24.0, 18.0, 34.0, 28.0));
|
expect(composingRect, const Rect.fromLTRB(24.0, 18.0, 34.0, 28.0));
|
||||||
composingRect = editable.getRectForComposingRange(const TextRange(start: 9, end: 10))!;
|
composingRect = editable.getRectForComposingRange(const TextRange(start: 9, end: 10))!;
|
||||||
expect(composingRect, const Rect.fromLTRB(34.0, 14.0, 48.0, 28.0));
|
expect(composingRect, const Rect.fromLTRB(34.0, 14.0, 48.0, 28.0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('able to render WidgetSpans nested spans', () async {
|
test('able to render WidgetSpans nested spans', () async {
|
||||||
final TextSelectionDelegate delegate =
|
final TextSelectionDelegate delegate =
|
||||||
@ -1711,7 +1701,7 @@ void main() {
|
|||||||
expect(composingRect, const Rect.fromLTRB(0.0, 14.0, 14.0, 28.0));
|
expect(composingRect, const Rect.fromLTRB(0.0, 14.0, 14.0, 28.0));
|
||||||
composingRect = editable.getRectForComposingRange(const TextRange(start: 7, end: 8));
|
composingRect = editable.getRectForComposingRange(const TextRange(start: 7, end: 8));
|
||||||
expect(composingRect, null);
|
expect(composingRect, null);
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('WidgetSpan render box is painted at correct offset when scrolled', () async {
|
test('WidgetSpan render box is painted at correct offset when scrolled', () async {
|
||||||
final TextSelectionDelegate delegate =
|
final TextSelectionDelegate delegate =
|
||||||
@ -1752,7 +1742,7 @@ void main() {
|
|||||||
final Rect composingRect =
|
final Rect composingRect =
|
||||||
editable.getRectForComposingRange(const TextRange(start: 4, end: 5))!;
|
editable.getRectForComposingRange(const TextRange(start: 4, end: 5))!;
|
||||||
expect(composingRect, const Rect.fromLTRB(40.0, -100.0, 54.0, -86.0));
|
expect(composingRect, const Rect.fromLTRB(40.0, -100.0, 54.0, -86.0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61021
|
});
|
||||||
|
|
||||||
test('can compute IntrinsicWidth for WidgetSpans', () {
|
test('can compute IntrinsicWidth for WidgetSpans', () {
|
||||||
// Regression test for https://github.com/flutter/flutter/issues/59316
|
// Regression test for https://github.com/flutter/flutter/issues/59316
|
||||||
@ -1893,7 +1883,7 @@ void main() {
|
|||||||
result = BoxHitTestResult();
|
result = BoxHitTestResult();
|
||||||
editable.hitTest(result, position: const Offset(5.0, 15.0));
|
editable.hitTest(result, position: const Offset(5.0, 15.0));
|
||||||
expect(result.path, hasLength(0));
|
expect(result.path, hasLength(0));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
|
|
||||||
test('hits correct WidgetSpan when scrolled', () {
|
test('hits correct WidgetSpan when scrolled', () {
|
||||||
final String text = '${"\n" * 10}test';
|
final String text = '${"\n" * 10}test';
|
||||||
@ -1975,7 +1965,7 @@ void main() {
|
|||||||
result = BoxHitTestResult();
|
result = BoxHitTestResult();
|
||||||
editable.hitTest(result, position: const Offset(5.0, 15.0));
|
editable.hitTest(result, position: const Offset(5.0, 15.0));
|
||||||
expect(result.path, hasLength(1)); // Only the RenderEditable.
|
expect(result.path, hasLength(1)); // Only the RenderEditable.
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('does not skip TextPainter.layout because of invalid cache', () {
|
test('does not skip TextPainter.layout because of invalid cache', () {
|
||||||
|
@ -247,7 +247,7 @@ void main() {
|
|||||||
expect(boxes[3], const TextBox.fromLTRBD(130.0, 10.0, 156.0, 20.0, TextDirection.ltr));
|
expect(boxes[3], const TextBox.fromLTRBD(130.0, 10.0, 156.0, 20.0, TextDirection.ltr));
|
||||||
// 'fifth':
|
// 'fifth':
|
||||||
expect(boxes[4], const TextBox.fromLTRBD(0.0, 20.0, 50.0, 30.0, TextDirection.ltr));
|
expect(boxes[4], const TextBox.fromLTRBD(0.0, 20.0, 50.0, 30.0, TextDirection.ltr));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61016
|
});
|
||||||
|
|
||||||
test('getWordBoundary control test', () {
|
test('getWordBoundary control test', () {
|
||||||
final RenderParagraph paragraph = RenderParagraph(
|
final RenderParagraph paragraph = RenderParagraph(
|
||||||
@ -343,7 +343,7 @@ void main() {
|
|||||||
|
|
||||||
relayoutWith(maxLines: 100, softWrap: true, overflow: TextOverflow.fade);
|
relayoutWith(maxLines: 100, softWrap: true, overflow: TextOverflow.fade);
|
||||||
expect(paragraph.debugHasOverflowShader, isFalse);
|
expect(paragraph.debugHasOverflowShader, isFalse);
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61018
|
});
|
||||||
|
|
||||||
test('maxLines', () {
|
test('maxLines', () {
|
||||||
final RenderParagraph paragraph = RenderParagraph(
|
final RenderParagraph paragraph = RenderParagraph(
|
||||||
@ -583,7 +583,7 @@ void main() {
|
|||||||
expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr));
|
expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr));
|
||||||
expect(boxes[3], const TextBox.fromLTRBD(38.0, 4.0, 48.0, 14.0, TextDirection.ltr));
|
expect(boxes[3], const TextBox.fromLTRBD(38.0, 4.0, 48.0, 14.0, TextDirection.ltr));
|
||||||
expect(boxes[4], const TextBox.fromLTRBD(48.0, 0.0, 62.0, 14.0, TextDirection.ltr));
|
expect(boxes[4], const TextBox.fromLTRBD(48.0, 0.0, 62.0, 14.0, TextDirection.ltr));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
|
|
||||||
test('getBoxesForSelection with boxHeightStyle for inline widgets', () {
|
test('getBoxesForSelection with boxHeightStyle for inline widgets', () {
|
||||||
const TextSpan text = TextSpan(
|
const TextSpan text = TextSpan(
|
||||||
@ -625,7 +625,7 @@ void main() {
|
|||||||
expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr));
|
expect(boxes[2], const TextBox.fromLTRBD(24.0, 0.0, 38.0, 14.0, TextDirection.ltr));
|
||||||
expect(boxes[3], const TextBox.fromLTRBD(38.0, 0.0, 48.0, 14.0, TextDirection.ltr));
|
expect(boxes[3], const TextBox.fromLTRBD(38.0, 0.0, 48.0, 14.0, TextDirection.ltr));
|
||||||
expect(boxes[4], const TextBox.fromLTRBD(48.0, 0.0, 62.0, 14.0, TextDirection.ltr));
|
expect(boxes[4], const TextBox.fromLTRBD(48.0, 0.0, 62.0, 14.0, TextDirection.ltr));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
|
|
||||||
test('inline widgets multiline test', () {
|
test('inline widgets multiline test', () {
|
||||||
const TextSpan text = TextSpan(
|
const TextSpan text = TextSpan(
|
||||||
@ -678,7 +678,7 @@ void main() {
|
|||||||
// Wraps
|
// Wraps
|
||||||
expect(boxes[7], const TextBox.fromLTRBD(0.0, 28.0, 14.0, 42.0, TextDirection.ltr));
|
expect(boxes[7], const TextBox.fromLTRBD(0.0, 28.0, 14.0, 42.0, TextDirection.ltr));
|
||||||
expect(boxes[8], const TextBox.fromLTRBD(14.0, 28.0, 28.0, 42.0, TextDirection.ltr));
|
expect(boxes[8], const TextBox.fromLTRBD(14.0, 28.0, 28.0, 42.0, TextDirection.ltr));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
|
|
||||||
test('Does not include the semantics node of truncated rendering children', () {
|
test('Does not include the semantics node of truncated rendering children', () {
|
||||||
// Regression test for https://github.com/flutter/flutter/issues/88180
|
// Regression test for https://github.com/flutter/flutter/issues/88180
|
||||||
@ -794,34 +794,30 @@ void main() {
|
|||||||
expect(node.childrenCount, 2);
|
expect(node.childrenCount, 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
test(
|
test('assembleSemanticsNode handles empty WidgetSpans that do not yield selection boxes', () {
|
||||||
'assembleSemanticsNode handles empty WidgetSpans that do not yield selection boxes',
|
final TextSpan text = TextSpan(
|
||||||
() {
|
text: '',
|
||||||
final TextSpan text = TextSpan(
|
children: <InlineSpan>[
|
||||||
text: '',
|
TextSpan(text: 'A', recognizer: TapGestureRecognizer()..onTap = () {}),
|
||||||
children: <InlineSpan>[
|
const WidgetSpan(child: SizedBox.shrink()),
|
||||||
TextSpan(text: 'A', recognizer: TapGestureRecognizer()..onTap = () {}),
|
TextSpan(text: 'C', recognizer: TapGestureRecognizer()..onTap = () {}),
|
||||||
const WidgetSpan(child: SizedBox.shrink()),
|
],
|
||||||
TextSpan(text: 'C', recognizer: TapGestureRecognizer()..onTap = () {}),
|
);
|
||||||
],
|
final List<RenderBox> renderBoxes = <RenderBox>[
|
||||||
);
|
RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr),
|
||||||
final List<RenderBox> renderBoxes = <RenderBox>[
|
];
|
||||||
RenderParagraph(const TextSpan(text: 'b'), textDirection: TextDirection.ltr),
|
final RenderParagraph paragraph = RenderParagraphWithEmptyBoxListForWidgetSpan(
|
||||||
];
|
text,
|
||||||
final RenderParagraph paragraph = RenderParagraphWithEmptyBoxListForWidgetSpan(
|
children: renderBoxes,
|
||||||
text,
|
textDirection: TextDirection.ltr,
|
||||||
children: renderBoxes,
|
);
|
||||||
textDirection: TextDirection.ltr,
|
_applyParentData(renderBoxes, paragraph.text);
|
||||||
);
|
layout(paragraph);
|
||||||
_applyParentData(renderBoxes, paragraph.text);
|
|
||||||
layout(paragraph);
|
|
||||||
|
|
||||||
final SemanticsNode node = SemanticsNode();
|
final SemanticsNode node = SemanticsNode();
|
||||||
paragraph.assembleSemanticsNode(node, SemanticsConfiguration(), <SemanticsNode>[]);
|
paragraph.assembleSemanticsNode(node, SemanticsConfiguration(), <SemanticsNode>[]);
|
||||||
expect(node.childrenCount, 2);
|
expect(node.childrenCount, 2);
|
||||||
},
|
});
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
|
||||||
|
|
||||||
test('Basic TextSpan Hit testing', () {
|
test('Basic TextSpan Hit testing', () {
|
||||||
final TextSpan textSpanA = TextSpan(text: 'A' * 10);
|
final TextSpan textSpanA = TextSpan(text: 'A' * 10);
|
||||||
@ -1064,7 +1060,7 @@ void main() {
|
|||||||
expect(paintingContext.canvas.drawnRect!.isEmpty, false);
|
expect(paintingContext.canvas.drawnRect!.isEmpty, false);
|
||||||
expect(paintingContext.canvas.drawnRectPaint!.style, PaintingStyle.fill);
|
expect(paintingContext.canvas.drawnRectPaint!.style, PaintingStyle.fill);
|
||||||
expect(paintingContext.canvas.drawnRectPaint!.color, isSameColorAs(selectionColor));
|
expect(paintingContext.canvas.drawnRectPaint!.color, isSameColorAs(selectionColor));
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61016
|
});
|
||||||
|
|
||||||
test('getPositionForOffset works', () async {
|
test('getPositionForOffset works', () async {
|
||||||
final RenderParagraph paragraph = RenderParagraph(
|
final RenderParagraph paragraph = RenderParagraph(
|
||||||
|
@ -87,7 +87,7 @@ void main() {
|
|||||||
expect(endEdge.globalPosition, const Offset(100.0, 100.0));
|
expect(endEdge.globalPosition, const Offset(100.0, 100.0));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/102410.
|
});
|
||||||
|
|
||||||
testWidgets('mouse double click sends select-word event', (WidgetTester tester) async {
|
testWidgets('mouse double click sends select-word event', (WidgetTester tester) async {
|
||||||
final UniqueKey spy = UniqueKey();
|
final UniqueKey spy = UniqueKey();
|
||||||
@ -368,7 +368,6 @@ void main() {
|
|||||||
expect(pageController.page, 1.0);
|
expect(pageController.page, 1.0);
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.iOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.iOS),
|
||||||
skip: kIsWeb, // https://github.com/flutter/flutter/issues/125582.
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -485,7 +484,7 @@ void main() {
|
|||||||
(renderSelectionSpy.events[1] as SelectionEdgeUpdateEvent).type,
|
(renderSelectionSpy.events[1] as SelectionEdgeUpdateEvent).type,
|
||||||
SelectionEventType.endEdgeUpdate,
|
SelectionEventType.endEdgeUpdate,
|
||||||
);
|
);
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/102410.
|
});
|
||||||
|
|
||||||
testWidgets('touch long press sends select-word event', (WidgetTester tester) async {
|
testWidgets('touch long press sends select-word event', (WidgetTester tester) async {
|
||||||
final UniqueKey spy = UniqueKey();
|
final UniqueKey spy = UniqueKey();
|
||||||
@ -1317,7 +1316,7 @@ void main() {
|
|||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.iOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.iOS),
|
||||||
skip: true, // https://github.com/flutter/flutter/issues/125582.
|
skip: !kIsWeb, // [intended] This test verifies web behavior.
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -1414,7 +1413,6 @@ void main() {
|
|||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.all(),
|
variant: TargetPlatformVariant.all(),
|
||||||
skip: kIsWeb, // https://github.com/flutter/flutter/issues/125582.
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets('RenderParagraph should invalidate cached bounding boxes', (
|
testWidgets('RenderParagraph should invalidate cached bounding boxes', (
|
||||||
@ -1477,7 +1475,7 @@ void main() {
|
|||||||
// Should select "Good" again.
|
// Should select "Good" again.
|
||||||
expect(paragraph.selections.isEmpty, isFalse);
|
expect(paragraph.selections.isEmpty, isFalse);
|
||||||
expect(paragraph.selections[0], const TextSelection(baseOffset: 25, extentOffset: 29));
|
expect(paragraph.selections[0], const TextSelection(baseOffset: 25, extentOffset: 29));
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets('mouse can select single text on desktop platforms', (WidgetTester tester) async {
|
testWidgets('mouse can select single text on desktop platforms', (WidgetTester tester) async {
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
@ -1737,7 +1735,7 @@ void main() {
|
|||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(paragraph.selections[0], const TextSelection(baseOffset: 4, extentOffset: 11));
|
expect(paragraph.selections[0], const TextSelection(baseOffset: 4, extentOffset: 11));
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets('mouse can select multiple widgets on double click drag', (
|
testWidgets('mouse can select multiple widgets on double click drag', (
|
||||||
WidgetTester tester,
|
WidgetTester tester,
|
||||||
@ -1793,7 +1791,7 @@ void main() {
|
|||||||
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 11));
|
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 11));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'mouse can select multiple widgets on double click drag and return to origin word',
|
'mouse can select multiple widgets on double click drag and return to origin word',
|
||||||
@ -1862,8 +1860,6 @@ void main() {
|
|||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
},
|
},
|
||||||
// https://github.com/flutter/flutter/issues/125582.
|
|
||||||
skip: kIsWeb,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets('mouse can reverse selection across multiple widgets on double click drag', (
|
testWidgets('mouse can reverse selection across multiple widgets on double click drag', (
|
||||||
@ -1919,7 +1915,7 @@ void main() {
|
|||||||
expect(paragraph1.selections[0], const TextSelection(baseOffset: 12, extentOffset: 4));
|
expect(paragraph1.selections[0], const TextSelection(baseOffset: 12, extentOffset: 4));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets('mouse can select paragraph-by-paragraph on triple click drag', (
|
testWidgets('mouse can select paragraph-by-paragraph on triple click drag', (
|
||||||
WidgetTester tester,
|
WidgetTester tester,
|
||||||
@ -2002,7 +1998,7 @@ void main() {
|
|||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(paragraph.selections[0], const TextSelection(baseOffset: 257, extentOffset: 0));
|
expect(paragraph.selections[0], const TextSelection(baseOffset: 257, extentOffset: 0));
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'mouse can select multiple widgets on triple click drag when selecting inside a WidgetSpan',
|
'mouse can select multiple widgets on triple click drag when selecting inside a WidgetSpan',
|
||||||
@ -2075,7 +2071,6 @@ void main() {
|
|||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
},
|
},
|
||||||
skip: kIsWeb, // https://github.com/flutter/flutter/issues/125582.
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets('mouse can select multiple widgets on triple click drag', (
|
testWidgets('mouse can select multiple widgets on triple click drag', (
|
||||||
@ -2158,7 +2153,7 @@ void main() {
|
|||||||
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 47));
|
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 47));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'mouse can select multiple widgets on triple click drag and return to origin paragraph',
|
'mouse can select multiple widgets on triple click drag and return to origin paragraph',
|
||||||
@ -2251,7 +2246,6 @@ void main() {
|
|||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
},
|
},
|
||||||
skip: kIsWeb, // https://github.com/flutter/flutter/issues/125582.
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets('mouse can reverse selection across multiple widgets on triple click drag', (
|
testWidgets('mouse can reverse selection across multiple widgets on triple click drag', (
|
||||||
@ -2315,7 +2309,7 @@ void main() {
|
|||||||
expect(paragraph1.selections[0], const TextSelection(baseOffset: 43, extentOffset: 0));
|
expect(paragraph1.selections[0], const TextSelection(baseOffset: 43, extentOffset: 0));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets('mouse can select multiple widgets', (WidgetTester tester) async {
|
testWidgets('mouse can select multiple widgets', (WidgetTester tester) async {
|
||||||
await tester.pumpWidget(
|
await tester.pumpWidget(
|
||||||
@ -3684,7 +3678,6 @@ void main() {
|
|||||||
TargetPlatform.linux,
|
TargetPlatform.linux,
|
||||||
TargetPlatform.fuchsia,
|
TargetPlatform.fuchsia,
|
||||||
}),
|
}),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3743,7 +3736,6 @@ void main() {
|
|||||||
TargetPlatform.linux,
|
TargetPlatform.linux,
|
||||||
TargetPlatform.fuchsia,
|
TargetPlatform.fuchsia,
|
||||||
}),
|
}),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3799,7 +3791,6 @@ void main() {
|
|||||||
TargetPlatform.linux,
|
TargetPlatform.linux,
|
||||||
TargetPlatform.fuchsia,
|
TargetPlatform.fuchsia,
|
||||||
}),
|
}),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3848,7 +3839,6 @@ void main() {
|
|||||||
expect(innerParagraph.selections[0], const TextSelection(baseOffset: 6, extentOffset: 9));
|
expect(innerParagraph.selections[0], const TextSelection(baseOffset: 6, extentOffset: 9));
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3898,7 +3888,6 @@ void main() {
|
|||||||
expect(tester.takeException(), isNull);
|
expect(tester.takeException(), isNull);
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3949,7 +3938,6 @@ void main() {
|
|||||||
expect(paragraph.selections[0], const TextSelection(baseOffset: 124, extentOffset: 129));
|
expect(paragraph.selections[0], const TextSelection(baseOffset: 124, extentOffset: 129));
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -3999,7 +3987,6 @@ void main() {
|
|||||||
expect(paragraph.selections[0], const TextSelection(baseOffset: 124, extentOffset: 129));
|
expect(paragraph.selections[0], const TextSelection(baseOffset: 124, extentOffset: 129));
|
||||||
},
|
},
|
||||||
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
variant: TargetPlatformVariant.only(TargetPlatform.macOS),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -4053,7 +4040,6 @@ void main() {
|
|||||||
TargetPlatform.linux,
|
TargetPlatform.linux,
|
||||||
TargetPlatform.fuchsia,
|
TargetPlatform.fuchsia,
|
||||||
}),
|
}),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
@ -4105,7 +4091,6 @@ void main() {
|
|||||||
TargetPlatform.iOS,
|
TargetPlatform.iOS,
|
||||||
TargetPlatform.macOS,
|
TargetPlatform.macOS,
|
||||||
}),
|
}),
|
||||||
skip: isBrowser, // https://github.com/flutter/flutter/issues/61020
|
|
||||||
);
|
);
|
||||||
|
|
||||||
testWidgets('mouse can select across bidi text', (WidgetTester tester) async {
|
testWidgets('mouse can select across bidi text', (WidgetTester tester) async {
|
||||||
@ -4155,7 +4140,7 @@ void main() {
|
|||||||
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 6));
|
expect(paragraph3.selections[0], const TextSelection(baseOffset: 0, extentOffset: 6));
|
||||||
|
|
||||||
await gesture.up();
|
await gesture.up();
|
||||||
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/61020
|
});
|
||||||
|
|
||||||
testWidgets('long press and drag touch moves selection word by word', (
|
testWidgets('long press and drag touch moves selection word by word', (
|
||||||
WidgetTester tester,
|
WidgetTester tester,
|
||||||
@ -5516,7 +5501,7 @@ void main() {
|
|||||||
expect(paragraph1.selections, isEmpty);
|
expect(paragraph1.selections, isEmpty);
|
||||||
expect(paragraph2.selections, isEmpty);
|
expect(paragraph2.selections, isEmpty);
|
||||||
expect(paragraph3.selections, isEmpty);
|
expect(paragraph3.selections, isEmpty);
|
||||||
}, skip: kIsWeb); // https://github.com/flutter/flutter/issues/125582.
|
});
|
||||||
|
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'Text processing actions are added to the toolbar',
|
'Text processing actions are added to the toolbar',
|
||||||
|
Loading…
Reference in New Issue
Block a user