
    $/i$                        d dl Zd dlmc mZ d dlZd dlZd dlZd dl	Z	d dl
mZmZmZ d dlmZmZ dZej$                  d        Zej(                  j                  d        Zej(                  j                  d        Zej(                  j                  d        Zej(                  j                  d	        Zej(                  j                  d
        Zej(                  j                  d        Zej(                  j                  d        Zej(                  j                  d        Zej(                  j                  d        Zej(                  j                  d        Zedk(  r ej@                  e!g       yy)    N)	MagicMockpatch	AsyncMock)BrowserControllerNavigationStatusa  
<!DOCTYPE html>
<html>
<head>
    <style>
        .moving-target { position: absolute; width: 50px; height: 50px; background: red; transition: all 0.1s; }
        .occluder { position: absolute; z-index: 9999; background: black; opacity: 0.9; }
        .canvas-text { border: 1px solid blue; }
        body { margin: 0; padding: 0; overflow: hidden; }
    </style>
</head>
<body>
    <div id="container"></div>
    <canvas id="ocr-canvas" width="200" height="50"></canvas>
    <script>
        // JS Chaos Injection
        window.startChaos = () => {
            const container = document.getElementById('container');
            // Create 100 moving elements
            for(let i=0; i<100; i++) {
                let div = document.createElement('div');
                div.className = 'moving-target';
                div.id = 'target-' + i;
                container.appendChild(div);
            }
            // Move them loop
            setInterval(() => {
                document.querySelectorAll('.moving-target').forEach(el => {
                    el.style.left = Math.random() * window.innerWidth + 'px';
                    el.style.top = Math.random() * window.innerHeight + 'px';
                });
            }, 50); // 20 FPS updates
        };
        
        // Canvas Text
        const ctx = document.getElementById('ocr-canvas').getContext('2d');
        ctx.font = '20px Arial';
        ctx.fillText('Hello Chaos', 10, 30);
    </script>
</body>
</html>
c                    K   t               } | j                          d {   }|sd  y |  | j                          d {    y 7 *7 w)N)r   
initializeclose)
controllerinitializeds     6/mnt/e/genesis-system/tests/chaos/test_visual_chaos.pybrowserr   5   sJ     "$J"--//K
    0
 	!s!   AA$AAAAc                   K   | st        j                  d       | j                  dt        z          d{    d}| j                  j
                  j                  |       d{    t        j                  d       d{    | j                  j                          d{   }|sedddt        j                         v st        j                  |      rt        j                  |      ndiz  }t        t        j                   |            | j                  j
                  j                  d	       d{   }d
}||k7  }|st        j"                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                   |            dx}}y7 7 7 h7 I7 w)z=Verify system stability with 100 rapidly moving DOM elements.Browser init faileddata:text/html,NaO  
    (() => {
        const container = document.getElementById('container');
        for(let i=0; i<100; i++) {
            let div = document.createElement('div');
            div.className = 'moving-target';
            div.id = 'target-' + i;
            container.appendChild(div);
        }
        setInterval(() => {
            document.querySelectorAll('.moving-target').forEach(el => {
                el.style.left = Math.random() * window.innerWidth + 'px';
                el.style.top = Math.random() * window.innerHeight + 'px';
            });
        }, 50);
    })();
           @zassert %(py0)spy0is_alivez.document.getElementById('target-0').style.left )!=)z%(py0)s != %(py3)sposr   py3assert %(py5)spy5)pytestskipnavigate
CHAOS_HTML_active_backend_pageevaluateasynciosleepis_available@py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanation_call_reprcompare)	r   jsr   @py_format1r   @py_assert2@py_assert1@py_format4@py_format6s	            r    test_moving_elements_performancer4   @   sB     FKK 56 

,z9
:::
B" 
!
!
'
'
0
0
444 --
 ,,99;;HOOOOO8OOO8OOOOO ''--667gh
hC3"93"33"? ;( 5  < isY   3G1G#.G1$G&%G1G)!G1#G,$BG17G/8B,G1&G1)G1,G1/G1c                   K   | st        j                  d       d}| j                  d|z          d{    	 | j                  j                  j                  d       d{    d}|s8ddt        j                  |      iz  }t        t        j                  |            d}y7 q7 E# t        $ r"}t        j                  d	|        Y d}~yd}~ww xY ww)
z3Verify coordinate mapping (implied) on scaled body.r   z<body style="transform: scale(0.5); transform-origin: 0 0; width: 200%; height: 200%;">
              <button id="btn" style="position:absolute; left:100px; top:100px; width:100px; height:100px;">Click Me</button>
              </body>r   Nz#btnTassert %(py1)spy1z Failed to click scaled element: )r   r   r   r    r!   clickr(   r*   r+   r,   	Exceptionfail)r   html@py_assert0@py_format2es        r   test_css_transform_scaler?   h   s      FKK 56D 

,t3
444<%%++11&999tt	 5 	: <6qc:;;<sK   1CB%C(B) !B'"AB) $C'B) )	C2C
CCCc                   K   | st        j                  d       d}| j                  d|z          d{    	 | j                  j                  j                  dd       d{    t        j                  d       y7 J7 # t        $ r`}g }d	}t        |      }||v }|}|s(d
}t        |      }	||	v }
|
}|
sd}t        |      }||v }|}|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }|j                  |       |st        j                  d
fd	f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |	      dz  }dd|iz  }|j                  |       |
st        j                  dfdf      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }|j                  |       t        j                   |d      i z  }dd|iz  }t#        t        j$                  |            dx}x}x}x}x}x}x}
x}	x}x}}Y d}~yd}~ww xY ww)z2Verify click fails or handles occlusion correctly.r   z
    <button id="target" onclick="window.clicked=true">Target</button>
    <div style="position:absolute; top:0; left:0; width:100%; height:100%; background:red; z-index:9999;" id="blocker"></div>
    r   Nz#targeti  )timeoutz)Should have raised error due to occlusion
intersectszreceiving the clickTimeout)in)z0%(py3)s in %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}strr>   )r   r   py6py8z%(py10)spy10)z5%(py13)s in %(py18)s
{%(py18)s = %(py15)s(%(py16)s)
})py13py15py16py18z%(py20)spy20)z5%(py23)s in %(py28)s
{%(py28)s = %(py25)s(%(py26)s)
})py23py25py26py28z%(py30)spy30   zassert %(py33)spy33)r   r   r   r    r!   r8   r:   r9   rE   r(   r-   r*   r&   r'   r)   append_format_boolopr+   r,   )r   r;   r>   r1   r0   @py_assert7@py_assert4r<   @py_assert12@py_assert17@py_assert14@py_assert22@py_assert27@py_assert24@py_format9@py_format11@py_format19@py_format21@py_format29@py_format31@py_format32@py_format34s                         r   test_element_occlusionrg   y   sS     FKK 56D 

,t3
444`%%++11)T1JJJ?@	 5 	K `_|_s1v_|v%_)>_#a&_)>&)H_I_Y\]^Y__IY_L_____|v___|______s___s______1___1___v_______)>&___)>______#___#______a___a___&_______IY____I______Y\___Y\______]^___]^___Y_________________`sK   1O/A>O/*B #B $B =O/ B 
O,MO'"O/'O,,O/c                   K   | st        j                  d       d}| j                  d       d{    | j                  j                  j                  |       d{    t        j                  d       d{    | j                  j                          d{   }|s8ddt        j                  |      iz  }t        t        j                  |            d}y7 7 7 g7 Gw)z-Verify browser stability under 20Hz flashing.r   z
    setInterval(() => {
        document.body.style.backgroundColor = document.body.style.backgroundColor == 'red' ? 'blue' : 'red';
    }, 50);
    z!data:text/html,<body>Flash</body>N      ?r6   r7   )r   r   r   r    r!   r"   r#   r$   r%   r(   r*   r+   r,   )r   r.   r<   r=   s       r   test_background_flash_stabilityrj      s      FKK 56
B
 

>
???

!
!
'
'
0
0
444
--
((5577777777777777 @47sF   .C&C,C&C C&:C";!C&C$AC& C&"C&$C&c                   K   | st        j                  d       | j                  j                  j	                  ddd       d{    | j                  d       d{    | j                  j                  j                  }|d   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}x}}| j                  j                          d{   }|s8ddt        j                  |      iz  }t        t        j                  |            d}y7 7 7 Gw)z,Verify layout handling on 400x3000 viewport.r   i  i  )widthheightNz#data:text/html,<div>Long Body</div>rl   ==z%(py1)s == %(py4)sr7   py4assert %(py6)srF   r6   r7   )r   r   r    r!   set_viewport_sizer   viewport_sizer(   r-   r*   r+   r,   r%   )r   sizer<   @py_assert3r0   @py_format5@py_format7r=   s           r   test_weird_viewportrz      s      FKK 56

!
!
'
'
9
9CSW:X
YYY


@
AAA""((66D=C=C=C=C((5577777777777777 ZA 8s8   AE*E"E*E%CE* E(!AE*%E*(E*c                   K   | st        j                  d       | j                  dt        z          d{    | j	                  d       d{   }|j
                  }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d}y7 7 w)z0Verify page with canvas loads and is accessible.r   r   Nz#ocr-canvas)assert %(py2)s
{%(py2)s = %(py0)s.found
}elr   py2)r   r   r   r   find_elementfoundr&   r'   r(   r)   r*   r+   r,   )r   r}   r1   @py_format3s       r   test_canvas_presencer      s      FKK 56


,z9
:::##M2	2B88O8OOOOO2OOO2OOO8OOOOOO ;	2s"   3C!CC!CBC!C!c                   K   | st        j                  d       d}| j                  d|z          d{    | j                  d       d{   }|j                  }|syddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d}y7 7 w)	z.Verify interaction with high Z-index elements.r   z
    <div id="bottom" style="z-index:1; position:absolute;">Bottom</div>
    <div id="top" style="z-index:999999; position:absolute;">Top</div>
    r   Nz#topr|   el_topr~   )r   r   r   r   r   r&   r'   r(   r)   r*   r+   r,   )r   r;   r   r1   r   s        r   test_z_index_chaosr      s      FKK 56D 

,t3
444''//F<<<66< 5/s"   1CCCCBCCc                 b  K   | st        j                  d       d}| j                  d|z          d{    t        j                  d       d{    | j
                  j                  j                  d       d{   }d}||kD  }|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y7 7 7 w)z0Verify stability during rapid content appending.r   aA  
    <div id="content"></div>
    <script>
    function add() {
        for(let i=0; i<10; i++) {
            let d = document.createElement('div');
            d.innerText = 'Item ' + Date.now();
            document.getElementById('content').appendChild(d);
        }
    }
    setInterval(add, 100);
    </script>
    r   Nr   z2document.getElementById('content').children.length2   )>)z%(py0)s > %(py3)scountr   r   r   )r   r   r   r#   r$   r    r!   r"   r(   r-   r&   r'   r)   r*   r+   r,   )r   r;   r   r0   r1   r2   r3   s          r   test_infinite_scroll_stabilityr      s      FKK 56D 

,t3
444
--
))//889mnnE52:52552 5ns4   1D/D)D/D+,D/=D->B,D/+D/-D/c                   K   | st        j                  d       d}| j                  d|z          d{    | j                  j                  j                  d       d{   }| j                  j                  j                  d       d{   }|j                          d{   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}x}}|j                          d{   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}x}}y7 7 \7 27 7 w)z.Verify handling of opacity:0 and display:none.r   zv
    <div id="hidden" style="display:none">Hidden</div>
    <div id="invisible" style="opacity:0">Invisible</div>
    r   Nz#hiddenz
#invisibleFrn   rp   rq   rs   rF   T)r   r   r   r    r!   query_selector
is_visibler(   r-   r*   r+   r,   )	r   r;   hiddeninvr<   rw   r0   rx   ry   s	            r   test_invisible_elementsr      sA     FKK 56D 

,t3
444**00??	JJF''--<<\J
JC""$$--$----$---$----------
 !!)T)!T))))!T)))!)))T))))))) 5J
J$
 "sY   1GF9,G F<!,GF?G%G&BG8G9BG<G?GGGc                 x  K   | st        j                  d       d}| j                  d|z          d{    t        j                  d       d{    | j
                  j                          d{   }|s8ddt        j                  |      iz  }t        t        j                  |            d}y7 7 e7 Ew)z9Verify recovery or non-crash on WebGL context loss event.r   z<canvas id="gl"></canvas>
    <script>
    const canvas = document.getElementById('gl');
    const gl = canvas.getContext('webgl');
    const ext = gl.getExtension('WEBGL_lose_context');
    if(ext) setTimeout(() => ext.loseContext(), 100);
    </script>r   Nri   r6   r7   )r   r   r   r#   r$   r    r%   r(   r*   r+   r,   )r   r;   r<   r=   s       r   test_webgl_context_lossr      s      FKK 56D 

,t3
444
--
((5577777777777777 57s4   1B:B4B:B6!B:2B83AB:6B:8B:__main__)"builtinsr&   _pytest.assertion.rewrite	assertionrewriter(   r   pytest_asyncior#   timeunittest.mockr   r   r   core.browser_controllerr   r   r   fixturer   markr4   r?   rg   rj   rz   r   r   r   r   r   __name__main__file__     r   <module>r      s         5 5 G)
V ! ! $ $N < <  ` `" 8 8 	8 	8   
 
  . * ** 8 8  zFKK
 r   