| 
									
										
										
										
											2022-03-01 13:56:21 -08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copyright Microsoft Corporation. All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { test as it, expect } from './pageTest'; | 
					
						
							| 
									
										
										
										
											2022-07-01 13:57:33 -07:00
										 |  |  | import { waitForTestLog } from '../config/utils'; | 
					
						
							| 
									
										
										
										
											2022-07-20 18:27:08 +02:00
										 |  |  | import type { Locator } from 'playwright-core'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type BoundingBox = Awaited<ReturnType<Locator['boundingBox']>>; | 
					
						
							| 
									
										
										
										
											2022-03-01 13:56:21 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-02 23:46:33 +01:00
										 |  |  | it.skip(({ mode }) => mode !== 'default', 'Highlight element has a closed shadow-root on != default'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-20 18:27:08 +02:00
										 |  |  | it('should highlight locator', async ({ page, isAndroid }) => { | 
					
						
							| 
									
										
										
										
											2022-03-01 13:56:21 -08:00
										 |  |  |   await page.setContent(`<input type='text' />`); | 
					
						
							| 
									
										
										
										
											2022-07-01 13:57:33 -07:00
										 |  |  |   const textPromise = waitForTestLog<string>(page, 'Highlight text for test: '); | 
					
						
							|  |  |  |   const boxPromise = waitForTestLog<{ x: number, y: number, width: number, height: number }>(page, 'Highlight box for test: '); | 
					
						
							| 
									
										
										
										
											2022-03-01 13:56:21 -08:00
										 |  |  |   await page.locator('input').highlight(); | 
					
						
							| 
									
										
										
										
											2022-10-05 16:59:34 -08:00
										 |  |  |   expect(await textPromise).toBe('locator(\'input\')'); | 
					
						
							| 
									
										
										
										
											2022-07-20 18:27:08 +02:00
										 |  |  |   let box1 = await page.locator('input').boundingBox(); | 
					
						
							|  |  |  |   let box2 = await boxPromise; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if (isAndroid) { | 
					
						
							|  |  |  |     box1 = roundBox(box1); | 
					
						
							|  |  |  |     box2 = roundBox(box2); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-01 13:56:21 -08:00
										 |  |  |   expect(box1).toEqual(box2); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-07-20 18:27:08 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | function roundBox(box: BoundingBox): BoundingBox { | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     x: Math.round(box.x), | 
					
						
							|  |  |  |     y: Math.round(box.y), | 
					
						
							|  |  |  |     width: Math.round(box.width), | 
					
						
							|  |  |  |     height: Math.round(box.height), | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | } |