test_1878024_g1_globo_com.py (1872B)
1 import pytest 2 3 URL = "https://g1.globo.com/" 4 WEBCOMPONENT_CSS = "nova-barra-globocom" 5 6 7 async def are_imgs_squashed(client): 8 await client.navigate(URL) 9 10 comp = client.await_css(WEBCOMPONENT_CSS, is_displayed=True) 11 12 # To test this without logging in, we inject a reference PNG (24x24 black 13 # square), and then compare it via screenshots to one which we've also placed 14 # in an HTML fragment similar to what the page uses. 15 [ref, actual] = client.execute_async_script( 16 """ 17 const [comp, done] = arguments; 18 const container = comp.shadowRoot.querySelector(".container-right"); 19 // 24x24 black square png 20 const src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACJJREFUOMtjVODhZqAGYGKgEhg1aNSgUYNGDRo1aNQg8gEAI0UAZ45NawoAAAAASUVORK5CYII="; 21 const div = document.createElement("div"); 22 div.innerHTML = ` 23 <div class="container-right"> 24 <img style="border:none" class="button-login-icon" decoding=sync src="${src}"> 25 </div> 26 <div class="container-right"> 27 <div class="button-login-icon"> 28 <img style="border:none" decoding="sync" src="${src}"> 29 </div> 30 </div> 31 `; 32 container.parentNode.insertBefore(div, container); 33 done(div.querySelectorAll("img")); 34 """, 35 comp, 36 ) 37 38 return ref.screenshot() != actual.screenshot() 39 40 41 @pytest.mark.skip_platforms("android") 42 @pytest.mark.asyncio 43 @pytest.mark.with_interventions 44 async def test_enabled(client): 45 assert not await are_imgs_squashed(client) 46 47 48 @pytest.mark.skip_platforms("android") 49 @pytest.mark.asyncio 50 @pytest.mark.without_interventions 51 async def test_disabled(client): 52 assert await are_imgs_squashed(client)