Is it possible to use Windows & Cygwin to run Selenium tests or does Selenium require a VM?
Selenium testing can refer to a couple different situations:


A. If you focus on implementing custom sites for clients, then you might create a custom Selenium test-suite which encompasses the configurations/customizations/addons. Basically everything in the tool-chain is at your discretion. Use Selenium (or something else!). Use Civi tarballs (or zipballs or git!). Use Windows (or not!).
B. If you focus on developing changes for civicrm-core, then you're looking at the WebTest suite which is used for canonical QA of official releases. This comes with more rules/constraints, e.g. you need to install Civi from git.


In situation A, the testing methodology has little to do with Civi. Any tool or method for testing general webapps should work the same with Civi. So I'm assuming that you're interested in situation B -- the WebTest suite in civicrm-core.

The basic process of running the WebTest suite is the same on any platform:


Install Apache/MySQL/PHP/Composer/Java/Git/NodeJS/Bower/Drupal.
Install the desired version of Civi (from git).
Setup various config files for the test suite -- most notably civicrm.settings.local.php and CiviSeleniumSettings.php.


I've done #1 and #2 many ways on many platforms (OSX + Ubuntu + Debian + WinXP + Win7, in bare metal and VMs and containers), and I've done step #3 most places (albeit not Windows). Steps #1 and #2 on Windows are PITA -- mostly because they're not standardized (which makes them hard to document/automate/maintain).

Or to give it an upbeat spin: If you can get through step #1 and #2 to a produce a working git-based installation on Windows/Cygwin, then the Selenium bits in #3 will be easy by comparison.