@@ -13,38 +13,39 @@ async function deselectAllNodes(page: Page) {
13
13
await expect ( page . locator ( '.GraphNode.selected' ) ) . toHaveCount ( 0 )
14
14
}
15
15
16
- test ( 'Different ways of opening Component Browser' , async ( { page } ) => {
17
- await actions . goToGraph ( page )
16
+ async function expectAndCancelBrowser ( page : Page , expectedInput : string ) {
18
17
const nodeCount = await locate . graphNode ( page ) . count ( )
18
+ await expect ( locate . componentBrowser ( page ) ) . toExist ( )
19
+ await expect ( locate . componentBrowserEntry ( page ) ) . toExist ( )
20
+ await expect ( locate . componentBrowserInput ( page ) . locator ( 'input' ) ) . toHaveValue ( expectedInput )
21
+ await expect ( locate . componentBrowserInput ( page ) . locator ( 'input' ) ) . toBeInViewport ( )
22
+ await page . keyboard . press ( 'Escape' )
23
+ await expect ( locate . componentBrowser ( page ) ) . not . toBeVisible ( )
24
+ await expect ( locate . graphNode ( page ) ) . toHaveCount ( nodeCount )
25
+ }
19
26
20
- async function expectAndCancelBrowser ( expectedInput : string ) {
21
- await expect ( locate . componentBrowser ( page ) ) . toExist ( )
22
- await expect ( locate . componentBrowserEntry ( page ) ) . toExist ( )
23
- await expect ( locate . componentBrowserInput ( page ) . locator ( 'input' ) ) . toHaveValue ( expectedInput )
24
- await page . keyboard . press ( 'Escape' )
25
- await expect ( locate . componentBrowser ( page ) ) . not . toBeVisible ( )
26
- await expect ( locate . graphNode ( page ) ) . toHaveCount ( nodeCount )
27
- }
27
+ test ( 'Different ways of opening Component Browser' , async ( { page } ) => {
28
+ await actions . goToGraph ( page )
28
29
29
30
// Without source node
30
31
31
32
// (+) button
32
33
await locate . addNewNodeButton ( page ) . click ( )
33
- await expectAndCancelBrowser ( '' )
34
+ await expectAndCancelBrowser ( page , '' )
34
35
// Enter key
35
36
await locate . graphEditor ( page ) . press ( 'Enter' )
36
- await expectAndCancelBrowser ( '' )
37
+ await expectAndCancelBrowser ( page , '' )
37
38
38
39
// With source node
39
40
40
41
// (+) button
41
42
await locate . graphNodeByBinding ( page , 'final' ) . click ( )
42
43
await locate . addNewNodeButton ( page ) . click ( )
43
- await expectAndCancelBrowser ( 'final.' )
44
+ await expectAndCancelBrowser ( page , 'final.' )
44
45
// Enter key
45
46
await locate . graphNodeByBinding ( page , 'final' ) . click ( )
46
47
await locate . graphEditor ( page ) . press ( 'Enter' )
47
- await expectAndCancelBrowser ( 'final.' )
48
+ await expectAndCancelBrowser ( page , 'final.' )
48
49
// Dragging out an edge
49
50
// `click` method of locator could be simpler, but `position` option doesn't work.
50
51
const outputPortArea = await locate
@@ -55,15 +56,48 @@ test('Different ways of opening Component Browser', async ({ page }) => {
55
56
const outputPortX = outputPortArea . x + outputPortArea . width / 2.0
56
57
const outputPortY = outputPortArea . y + outputPortArea . height - 2.0
57
58
await page . mouse . click ( outputPortX , outputPortY )
58
- await page . mouse . click ( 40 , 300 )
59
- await expectAndCancelBrowser ( 'final.' )
59
+ await page . mouse . click ( 100 , 500 )
60
+ await expectAndCancelBrowser ( page , 'final.' )
60
61
// Double-clicking port
61
62
// TODO[ao] Without timeout, even the first click would be treated as double due to previous
62
63
// event. Probably we need a better way to simulate double clicks.
63
64
await page . waitForTimeout ( 600 )
64
65
await page . mouse . click ( outputPortX , outputPortY )
65
66
await page . mouse . click ( outputPortX , outputPortY )
66
- await expectAndCancelBrowser ( 'final.' )
67
+ await expectAndCancelBrowser ( page , 'final.' )
68
+ } )
69
+
70
+ test ( 'Graph Editor pans to Component Browser' , async ( { page } ) => {
71
+ await actions . goToGraph ( page )
72
+
73
+ // Select node, pan out of view of it, press Enter; should pan to show node and CB
74
+ await locate . graphNodeByBinding ( page , 'final' ) . click ( )
75
+ await page . mouse . move ( 100 , 80 )
76
+ await page . mouse . down ( { button : 'middle' } )
77
+ await page . mouse . move ( 100 , 700 )
78
+ await page . mouse . up ( { button : 'middle' } )
79
+ await expect ( locate . graphNodeByBinding ( page , 'final' ) ) . not . toBeInViewport ( )
80
+ await locate . graphEditor ( page ) . press ( 'Enter' )
81
+ await expect ( locate . graphNodeByBinding ( page , 'final' ) ) . toBeInViewport ( )
82
+ await expectAndCancelBrowser ( page , 'final.' )
83
+
84
+ // Dragging out an edge to the bottom of the viewport; when the CB pans into view, some nodes are out of view.
85
+ await page . mouse . move ( 100 , 1100 )
86
+ await page . mouse . down ( { button : 'middle' } )
87
+ await page . mouse . move ( 100 , 80 )
88
+ await page . mouse . up ( { button : 'middle' } )
89
+ await expect ( locate . graphNodeByBinding ( page , 'five' ) ) . toBeInViewport ( )
90
+ const outputPortArea = await locate
91
+ . graphNodeByBinding ( page , 'final' )
92
+ . locator ( '.outputPortHoverArea' )
93
+ . boundingBox ( )
94
+ assert ( outputPortArea )
95
+ const outputPortX = outputPortArea . x + outputPortArea . width / 2.0
96
+ const outputPortY = outputPortArea . y + outputPortArea . height - 2.0
97
+ await page . mouse . click ( outputPortX , outputPortY )
98
+ await page . mouse . click ( 100 , 1550 )
99
+ await expect ( locate . graphNodeByBinding ( page , 'five' ) ) . not . toBeInViewport ( )
100
+ await expectAndCancelBrowser ( page , 'final.' )
67
101
} )
68
102
69
103
test ( 'Accepting suggestion' , async ( { page } ) => {
0 commit comments