Namespace ProtoTest.Web

Classes

AndWebLocator
AttributeWebLocator
By

Factory for semantic web locators.

CssWebLocator
HasTextWebLocator
JQueryIdleWait

Built-in application wait that is a no-op when jQuery is absent.

LabelWebLocator
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")]

NthWebLocator
PlaceholderWebLocator
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 via Proto.Context.Web(name).

ProtoExecutionContextExtensions
ProtoHostBuilderExtensions
RoleWebLocator
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 via Proto.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.

TableCellByHeaderWebLocator
TableCellWebLocator
TestIdWebLocator
TextWebLocator
WebActionabilityException
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.

WebAssertionException
WebAssertions

The assertions for one element, in their positive (Should) or negated (ShouldNot) form. Each assertion polls until it passes or its timeout elapses.

WebBackendCapabilityException
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. ParentCorrelationId is set only when the operation was started inside another operation's explicit nesting scope (a WaitUntilAsync condition), 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:Pages and the frontend routes discovered from ProtoTest: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/42 covers /users/{id}, and configured entries accept the same route syntax as discovered routes, so /users/:id becomes 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.

WebElementResolutionException
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.

WebFailureContext
WebFlowExtensions
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.

WebLoginContext
WebMediaTypes

Guesses a media type from a downloaded file's extension. It is a guess, never a promise.

WebOperationContext
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.

WebWaitContext
WebWaitObservation
WebWaitTimeoutException
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.

IWebBackendFactory
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.

IWebWaitCondition

Enums

WebKey
WebOperationKind
WebPageFramework

The frontend framework a page source folder is scanned as; Auto detects it.

WebRole

Semantic roles understood by ProtoTest web backends.

WebWaitTiming

Delegates

WebOperationDelegate