sync SVN r18237
This commit is contained in:
@@ -216,7 +216,7 @@ s. **Dialoguri native care nu apar in log si nu sunt prinse de `ON ERROR`/mock-u
|
||||
dupa numele clasei — VFP foloseste clase `vfp9...` si pentru shell-ul principal si pentru
|
||||
dialogurile proprii), captureaza PNG + textul fiecarui control copil (`WM_GETTEXT`) la orice
|
||||
fereastra noua, si omoara procesul la iesire (`finally`, niciodata ramas viu). **Interzis strict:
|
||||
input real** (`keybd_event`/`SetForegroundWindow`/`SendInput`/`mouse_event`) — masina e
|
||||
input real** (`keybd_event`/`SetForegroundWindow`/`SendInput`/`mouse_event`; exceptia controlata: sectiunea "Mouse real" de mai jos) — masina e
|
||||
partajata, un input injectat la nivel de sistem ajunge in orice fereastra are focus in acel
|
||||
moment, nu neaparat in dialogul tintit (patit: un ESCAPE injectat a intrerupt sesiunea IDE a
|
||||
utilizatorului, aflat in lucru in paralel). `-AutoDismiss` foloseste STRICT mesaje Windows
|
||||
@@ -226,3 +226,26 @@ s. **Dialoguri native care nu apar in log si nu sunt prinse de `ON ERROR`/mock-u
|
||||
raman oricum de incredere, indiferent de rezultatul dismiss-ului. Watchdog-ul sterge singur
|
||||
`.fxp`-ul vechi la lansare - capcana completa (de ce e obligatoriu) in `depanare_testare_vfp.md`
|
||||
sectiunea 7.
|
||||
|
||||
## Mouse real: tragere, hover, controale fara fereastra
|
||||
|
||||
- **Apelul direct de metode nu dovedeste UI-ul.** `obj.MouseMove(1, ...)` / `obj.MouseDown(...)` din test trec si cand
|
||||
in aplicatie nu merge nimic: nu verifica cine primeste evenimentul (un copil il poate inghiti) si nici pierderea
|
||||
`MouseMove` cand cursorul iese din controlul fara fereastra. Pentru tragere/hover: mouse real.
|
||||
- **Mouse real = exceptie de la interdictia de input real de mai sus**, admisa DOAR cu toate conditiile:
|
||||
acordul lui Marius pentru rulare (sau masina de test separata, `masini-dezvoltare-testare.md`); driver EXTERN
|
||||
procesului VFP (PowerShell: `SetCursorPos` + `mouse_event`) - `mouse_event` din acelasi proces VFP (program sau
|
||||
Timer) agata testul cu butonul apasat; butonul stang eliberat in `finally`; coordonate calculate din formular
|
||||
(`OBJTOCLIENT` + `ClientToScreen` pe `Thisform.HWnd`), formular maximizat. Sincronizare test <-> driver prin
|
||||
fisiere-semnal. Model: `efactura_import\drv_splitter_mouse.ps1` + `test_splitter_mouse.prg`
|
||||
(`-Poz <n> -Desch <k> -Dx <px>`).
|
||||
- **Dovada = valori, nu proprietati.** Logheaza pozitia (`Top`, dimensiunea obiectelor vecine) inainte/dupa tragere;
|
||||
pentru culori citeste pixelul de pe ecran (`GetPixel` pe DC-ul ferestrei) - `BackColor` nu spune ce se deseneaza
|
||||
(hover ramas activ, `BackStyle`).
|
||||
- **Fluxul real de deschidere, de mai multe ori.** Deschide formularul exact ca programul apelant (ex.
|
||||
`CREATEOBJECT(...)` + `Show(1)` modal, maximizat), nu `WindowType = 0` + `Show()`: ordinea Resize/Show difera si
|
||||
rezultatul la fel. Repeta deschidere -> actiune -> inchidere de 2-3 ori in aceeasi sesiune; testeaza si punctele
|
||||
diferite de apucare (margine vs. mijloc).
|
||||
- **Ini temporar.** Pozitii/optiuni salvate (`setini` pe `gcGeneralIniFile`) se redirecteaza pe un ini temporar
|
||||
inainte de instantiere; altfel testul scrie in `D:\ROA\settings.ini` al utilizatorului
|
||||
(`test_import_efactura_smoke.prg` inca o face).
|
||||
|
||||
Reference in New Issue
Block a user