csf-dev / CSF.Screenplay

Implementation of the Screenplay pattern (aka Journey) in .NET
https://csf-dev.github.io/CSF.Screenplay/
MIT License
13 stars 1 forks source link

Expand upon the browser capabilities mechanism #107

Closed craigfowler closed 6 years ago

craigfowler commented 6 years ago

I have a mechanism for describing the capabilities of web browsers and then detecting those capabilities within test code (particularly actions).

Unfortunately browser and OS versions and their behaviours presents us with a moving target and so this mechanism needs to be expanded upon.

Desired features of new system

Proposed solution

Use a text-based tabular format like CSV for the browser capabilities. This would be a matrix of version numbers and the capabilities showing which apply to which.

Each browser and OS combination gets a single text file. Each file would be compiled into an assembly which can then be shipped as a NuGet package. This would be frequently re-released with updates.

When a file has an OS then that is used. Also an earlier OS version may be used as a fallback. Finally a non-versioned OS version of the file may also be used.

We need a separate OS file which lists the operating system versions and how they relate to one another:

craigfowler commented 6 years ago

Another solution to consider is a JSON-based format.

Something like:

These can still be compiled in as resources but could be overridden by ones supplied from the consuming code.

craigfowler commented 6 years ago

This is very closely related to this related issue in the WebDriverExtras repository. In that issue I'll be creating a provider that is able to receive an object model of web driver flags. That object model will have the shape described in this ticket.

craigfowler commented 6 years ago

Migrated