Потокобезпечний `WebDriverProvider` через `ThreadLocal`
`WebDriverProvider` зберігає driver instance у `ThreadLocal`. Test runner створює потоки для запусків, а provider повертає драйвер, пов'язаний із поточним thread id: якщо його ще немає, створюється `ChromeDriver`; якщо є — повторно використовується поточний instance. Окремий метод закриття викликає `quit()` і видаляє значення з `ThreadLocal`. Це готує основу до паралельних запусків: тести в різних потоках не повинні ділити один браузерний session instance.