Namespace ProtoTest.Web
Classes
- By
Factory for semantic web locators.
- JQueryIdleWait
Built-in application wait that is a no-op when jQuery is absent.
- LoginAsAttribute<TStrategy>
Logs a named Web session in during test setup using an application-owned
TStrategy, without storing credentials in attribute metadata. Usage: [LoginAs<AdminUiLogin>("Administrator")] or [LoginAs<ApiTokenLogin>("Administrator", "tenant-a")]
- PlaywrightWebHostBuilderExtensions
Playwright registration for IProtoHostBuilder. Reference the ProtoTest.Web.Playwright package and call
AddWeb(...); the backend is implied by the referenced package. Sessions are created per test viaProto.Context.Web(name).
- SeleniumWebHostBuilderExtensions
Selenium registration for IProtoHostBuilder. Reference the ProtoTest.Web.Selenium package and call
AddWeb(...); the backend is implied by the referenced package. Sessions are created per test viaProto.Context.Web(name). The driver a session creates is owned by ProtoTest: it is quit and disposed when the session completes, so the factory must return a fresh driver rather than a shared one.
- WebArtifactNames
The naming rule web artifacts share: lowercased identifiers made of letters, digits and single dashes, so a session or element name can never break a file name. Backends use it for their failure artifacts and native diagnostics; the failure helpers apply the same rule internally.
- WebAssertions
The assertions for one element, in their positive (Should) or negated (ShouldNot) form. Each assertion polls until it passes or its timeout elapses.
- WebBackendDefaults
The web layer's timing defaults: how long a wait or bounded assertion runs before failing, and how often it probes. Both backends and a hand-written one read the timeout default for their options, so every backend fails at the same speed unless a test configures otherwise; the poll default is what PollInterval returns for a backend without an interval option.
- WebBackendErrors
The failure messages both backends report for the shared resolution and actionability contract, so the same situation reads the same whichever backend produced it. A hand-written backend composes them so its failures stay indistinguishable from the shipped ones.
- WebBackendOperationContext
One semantic operation as the backend sees it.
ParentCorrelationIdis set only when the operation was started inside another operation's explicit nesting scope (aWaitUntilAsynccondition), which lets a backend group native diagnostics by operation lineage instead of guessing from flow-local state.
- WebBackendOptions
The backend options bootstrap every factory shares: create the options, apply the code callback, then bind configuration once - started infrastructure overrides it, and the backend's own section (
ProtoTest:Web:{backend}) overrides the code callback - and validate the bound result once. A hand-written backend's factory calls this so it resolves options exactly like the shipped ones.
- WebComponent
Base class for lazily scoped, reusable page components.
- WebComponentCollection<TComponent>
A lazy collection of typed components selected inside a parent component.
- WebCoverageCollector
Aggregates page coverage: every page path the suite visited, verified or discovered, plus the inventory in
ProtoTest:Web:Pagesand the frontend routes discovered fromProtoTest:Web:Pages:Source. A page is covered only when a VerifiedObservationKind observation was recorded for it; a page that was merely visited, or that only exists in the inventory, is reported uncovered. A concrete path that matches an inventory pattern lands on the pattern: verifying/users/42covers/users/{id}, and configured entries accept the same route syntax as discovered routes, so/users/:idbecomes the same pattern.
- WebDownload
A file the browser downloaded while a web operation ran.
- WebElement
A cheap, reusable reference to an element; native resolution occurs per operation.
- WebElementReference
The immutable semantic reference passed to a concrete web backend.
- WebFailureArtifacts
Captures the failure artifacts both backends produce (screenshot, DOM and location) with one naming rule, one set of descriptions and one location format. Each capture is isolated so a failing artifact never replaces the original web error. A hand-written backend calls this from CaptureFailureAsync(WebFailureContext, CancellationToken) so its artifacts match the documented
web-{session}-{element}-{n}-…naming.
- WebFlow<TComponent>
A typed, sequential interaction plan whose individual actions retain normal tracing and waits.
- WebLocator
A structured, backend-neutral description of how to find an element.
- WebMediaTypes
Guesses a media type from a downloaded file's extension. It is a guess, never a promise.
- WebPage
A top-level component with navigation support.
- WebPageSourceOptions
Where the page inventory comes from: the frontend source folder and the framework to scan it as. Its settings live under
ProtoTest:Web:Pages, whose other keys hold the explicit inventory entries, so it reads its two keys directly instead of binding the whole section.
- WebProbeLoop
The web layer's retry loop: it probes until the observation satisfies the predicate or the timeout elapses, polling every interval the session reports. Assertions, the Selenium backend and any hand-written backend share it, so all retry at the same speed and report the same last observation. The interval is resolved per poll from the backend's PollInterval, so a configured interval reaches the session's assertions instead of only the backend's own action retries.
- WebRoleMap
The role vocabulary every backend resolves: the canonical lowercase ARIA name. Playwright resolves roles natively through its ARIA engine; Selenium translates the name to XPath. Public so additional backend packages translate identically, next to WebXPath for the same reason.
- WebSession
Test-scoped entry point for pages, operations, and explicit native backend access.
- WebSessionAttribute
Declares a named web session for the test during setup, created on demand like any other session. Optionally navigates it to a start URL. Combine with LoginAsAttribute<TStrategy> when the session also needs authentication; use Order to sequence the two if needed.
- WebTableRow
Base row with zero-based and one-based cell addressing for conventional and legacy tables.
- WebTable<TRow>
Typed table foundation built on the same lazy component collection as lists and grids.
- WebXPath
Shared XPath construction for web backends: literals, text predicates, and the table-cell-by-header expression. Public so additional backend packages translate identically.
Structs
- WebProbe
What one probe observed: whether its condition holds and the text that explains the observation.
Interfaces
- IWebBackend
Executes ProtoTest web concepts using a concrete browser technology.
- IWebBackendDiagnostics
Optional backend capability: captures best-effort diagnostics for a failed operation.
- IWebBackendDownloads
Optional backend capability: captures a file the browser downloads. Playwright implements it with its native download waiter. Selenium implements it by throwing WebBackendCapabilityException because the WebDriver protocol has no download API, so a session using Selenium fails before the trigger runs instead of quietly capturing nothing.
- IWebBackendJavaScript
Optional backend capability: evaluates JavaScript in the page.
- IWebLoginStrategy
An application-owned login flow applied by LoginAsAttribute<TStrategy>. Define one implementation per distinct way your application logs a user in (driving the real login page, calling an API and injecting a token, loading captured storage state, impersonation, ...); nothing about ProtoTest constrains how many you have or what they're named.
- IWebOperationMiddleware
Wraps semantic web operations without exposing backend-specific pipeline stages.
- IWebPageSourceScanner
Finds the page routes a frontend source folder defines, so pages that exist in the source show as uncovered until a browser test verifies them. A missing, unreadable or malformed folder yields no routes: a framework that isn't there is an answer, not a failure.
Enums
- WebPageFramework
The frontend framework a page source folder is scanned as; Auto detects it.
- WebRole
Semantic roles understood by ProtoTest web backends.