Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ce64baa
refactor: migrated to Selenium 4
jamesmcroft May 18, 2026
d6a67ac
feat(windows-driver): add LegerityWindowsDriver as WinAppDriver repla…
jamesmcroft May 18, 2026
6942e72
chore: update dependabot configuration and CI workflows for improved …
jamesmcroft May 18, 2026
877aef0
docs: enhance documentation
jamesmcroft May 18, 2026
bed4ed3
chore: upgrade dependencies and refactor usage across test project te…
jamesmcroft May 18, 2026
7003c8e
feat: enhance page object generation for iOS and web, add new templat…
jamesmcroft May 18, 2026
272717d
docs: enhance documentation and descriptions across Legerity packages
jamesmcroft May 18, 2026
8c3b943
feat: add CSS selector support for element searches in Windows Driver…
jamesmcroft May 18, 2026
35a6cd4
feat: implement session shutdown scheduling in SessionManager and Web…
jamesmcroft May 18, 2026
eaea849
feat: enhance date parsing in date input controls to respect current …
jamesmcroft May 18, 2026
e84a5a3
feat: improve date selection logic in CalendarView and update related…
jamesmcroft May 18, 2026
228d453
feat: enhance Element interaction to include selection
jamesmcroft May 18, 2026
dfe0185
feat: override Click method in DatePicker to interact with FlyoutButton
jamesmcroft May 18, 2026
01fe80e
feat: update CI configuration for packaging
jamesmcroft May 19, 2026
7d9e1ae
feat: update Windows Driver installation and usage instructions, and …
jamesmcroft May 19, 2026
cecb85d
feat: ensure Windows targeting is enabled in project configuration
jamesmcroft May 19, 2026
fccddb8
feat: update templates project config to include symbols and suppress…
jamesmcroft May 19, 2026
47fbf5c
feat: add Windows Driver CI workflow and update documentation for ins…
jamesmcroft May 19, 2026
c70127f
fix: update Windows Driver workflow to include runtime specifications…
jamesmcroft May 19, 2026
a819b8e
fix: remove redundant runtime specifications from dotnet restore step
jamesmcroft May 19, 2026
b71f58e
feat: implement AppExclusionAttribute to skip tests for specific appl…
jamesmcroft May 20, 2026
5cfb440
feat: add AGENTS.md for project architecture, build, and development …
jamesmcroft May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
327 changes: 189 additions & 138 deletions .editorconfig

Large diffs are not rendered by default.

63 changes: 63 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
40 changes: 35 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,37 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
- package-ecosystem: nuget
directory: "/"
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 10
commit-message:
prefix: "chore"
include: "scope"
groups:
testing:
patterns:
- "coverlet*"
- "Microsoft.NET.Test*"
- "NUnit*"
- "Shouldly"
appium:
patterns:
- "Appium*"
analyzers:
patterns:
- "Microsoft.SourceLink*"
flaui:
patterns:
- "FlaUI*"

- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
commit-message:
prefix: "ci"
include: "scope"
73 changes: 58 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,44 @@ on:
- main
paths:
- src/**
- samples/**
- tests/**
- build/**
- tools/**
- .github/workflows/ci.yml
- Directory.Build.props
- global.json
pull_request:
branches:
- main
paths:
- src/**
- samples/**
- tests/**
- build/**
- tools/**
- .github/workflows/ci.yml
- Directory.Build.props
- global.json
workflow_dispatch:

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

permissions:
contents: read

jobs:
build:
runs-on: windows-latest

env:
BUILD_CONFIG: 'Release'
SOLUTION: 'src/Legerity.sln'

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Get Build Version
run: |
Expand All @@ -45,20 +55,53 @@ jobs:
echo "BUILD_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
shell: pwsh

- name: Setup .NET 6.0
uses: actions/setup-dotnet@v1
- name: Setup .NET 10.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 6.0.x
dotnet-version: 10.0.x

- name: Restore dependencies
run: dotnet restore $env:SOLUTION

- name: Build
run: dotnet build $env:SOLUTION --configuration $env:BUILD_CONFIG --no-restore -p:Version=$env:BUILD_VERSION

- name: Setup NuGet
uses: NuGet/setup-nuget@v1.0.5
publish:
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: windows-latest

env:
BUILD_CONFIG: 'Release'
SOLUTION: 'src/Legerity.sln'

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Get Build Version
run: |
Import-Module .\build\GetBuildVersion.psm1
Write-Host $Env:GITHUB_REF
$version = GetBuildVersion -VersionString $Env:GITHUB_REF
echo "BUILD_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
shell: pwsh

- name: Setup .NET 10.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x

- name: Restore dependencies
run: dotnet restore $SOLUTION
run: dotnet restore $env:SOLUTION

- name: Build
run: dotnet build $SOLUTION --configuration $BUILD_CONFIG -p:Version=$BUILD_VERSION --no-restore
run: dotnet build $env:SOLUTION --configuration $env:BUILD_CONFIG --no-restore -p:Version=$env:BUILD_VERSION

- name: Publish
if: startsWith(github.ref, 'refs/tags/v')
run: nuget push **\*.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}}
- name: Publish to NuGet.org
run: |
Get-ChildItem . -Recurse -Filter *.nupkg | ForEach-Object {
dotnet nuget push $_.FullName --source 'https://api.nuget.org/v3/index.json' --api-key '${{ secrets.NUGET_API_KEY }}' --skip-duplicate
}
shell: pwsh
36 changes: 22 additions & 14 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ on:
branches:
- main
paths:
- docs/**
- src/**
- docs/**
- .github/workflows/docs.yml
pull_request:
branches:
Expand All @@ -16,32 +16,40 @@ on:
- .github/workflows/docs.yml
workflow_dispatch:

concurrency:
group: docs-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

permissions:
contents: write

jobs:
generate-docs:

runs-on: windows-latest
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Setup .NET 6.0
uses: actions/setup-dotnet@v1
- name: Setup .NET 10.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 6.0.x
dotnet-version: 10.0.x

- name: Setup DocFX
uses: crazy-max/ghaction-chocolatey@v1
with:
args: install docfx
- name: Install DocFX
run: dotnet tool install -g docfx

- name: Restore projects
run: dotnet restore src/Legerity.sln

- name: DocFX Build
- name: Build DocFX site
working-directory: docs
run: docfx .\docfx.json
run: docfx docfx.json
continue-on-error: false

- name: Publish
- name: Publish DocFX site
if: github.event_name == 'push'
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/_site
Expand Down
112 changes: 112 additions & 0 deletions .github/workflows/windows-driver.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Windows Driver

on:
push:
tags:
- v*
branches:
- main
paths:
- tools/Legerity.WindowsDriver/**
- .github/workflows/windows-driver.yml
pull_request:
branches:
- main
paths:
- tools/Legerity.WindowsDriver/**
- .github/workflows/windows-driver.yml
workflow_dispatch:

concurrency:
group: windows-driver-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

permissions:
contents: write

jobs:
build:
runs-on: windows-latest

env:
PROJECT: 'tools/Legerity.WindowsDriver/Legerity.WindowsDriver.csproj'
BUILD_CONFIG: 'Release'

steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Get Build Version
run: |
Import-Module .\build\GetBuildVersion.psm1
Write-Host $Env:GITHUB_REF
$version = GetBuildVersion -VersionString $Env:GITHUB_REF
echo "BUILD_VERSION=$version" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append
shell: pwsh

- name: Setup .NET 10.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x

- name: Restore
run: dotnet restore $env:PROJECT

- name: Build
run: dotnet build $env:PROJECT --configuration $env:BUILD_CONFIG --no-restore -p:Version=$env:BUILD_VERSION

- name: Publish (win-x64)
run: dotnet publish $env:PROJECT --configuration $env:BUILD_CONFIG --runtime win-x64 --self-contained -p:Version=$env:BUILD_VERSION -p:PublishSingleFile=true -o publish/win-x64

- name: Publish (win-arm64)
run: dotnet publish $env:PROJECT --configuration $env:BUILD_CONFIG --runtime win-arm64 --self-contained -p:Version=$env:BUILD_VERSION -p:PublishSingleFile=true -o publish/win-arm64

- name: Package artifacts
run: |
Compress-Archive -Path publish/win-x64/* -DestinationPath publish/Legerity.WindowsDriver-$env:BUILD_VERSION-win-x64.zip
Compress-Archive -Path publish/win-arm64/* -DestinationPath publish/Legerity.WindowsDriver-$env:BUILD_VERSION-win-arm64.zip
shell: pwsh

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: windows-driver
path: publish/*.zip

release:
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest

steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: windows-driver
path: artifacts

- name: Create GitHub Release
uses: softprops/action-gh-release@v3
with:
name: Legerity Windows Driver ${{ github.ref_name }}
body: |
## Legerity Windows Driver ${{ github.ref_name }}

A W3C WebDriver-compliant server for Windows desktop UI testing.

### Installation

1. Download the zip for your platform below.
2. Extract to a folder (e.g. `C:\tools\Legerity.WindowsDriver`).
3. Add the folder to your system `PATH`.

The driver will be automatically discovered by `LegerityWindowsDriverHelper` when on the PATH.

### What's included

- `Legerity.WindowsDriver.exe` - Self-contained, no .NET runtime required.

See the [documentation](https://made-apps.github.io/legerity/articles/tools/windows-driver.html) for usage details.
files: artifacts/*.zip
fail_on_unmatched_files: true
Loading
Loading