[Feature] Support Internet Explorer
Feature description
Though Internet Explorer is no more available, Microsoft Edge can run in compatibility mode to emulate it. We'd like to extend Spectrum to support it.
Describe why this should be added to Spectrum
For users who still need Internet Explorer, having Spectrum support it would mean adding value to their tests suite. Similarly to other drivers, we'd like to have this one in the internal configuration.default.yaml:
drivers:
ie:
args: [ ]
capabilities:
prefs:
download.default_directory: ${downloadsFolder}
service:
buildCheckDisabled: false
appendLog: false
readableTimestamp: false
logLevel: SEVERE
silent: false
verbose: false
allowedListIps: ''
Since ie is just an instance of edge with some additional configuration, the corresponding model in the Configuration.java to map the keys in the yaml snippet above could effectively be an extension of the inner Configuration.Drivers.Edge class.
The same could be valid for the effective driver: the new InternetExplorer.java class to be written could be an extension of Edge.java, unless of course there's some valid reason not to have this. For example, if the set of options completely differs from edge's, there's no reason to have this kind of inheritance. It's likely better to have InternetExplorer.java extend the abstract Chromium.java
Additional context
Take the other currently available browsers as an example on how to implement the new classes.
Beyond writing unit tests, an integration test is needed here as well. Ideally, we should add a specific profile in the pom.xml to run the whole it suite with internet explorer as well.
If this doesn't work (tests could be flaky in internet explorer), we could have a dedicated clone of just the CheckboxIT.java, with all the needed corrections to make it run consistently in ie.
In the latter case, we could have a dedicated module with just that test, as in the it-macos where we have just the SafariCheckboxIT.java for the same reason.
But let's discuss about ITs once the implementation is done.