Skip to content

Commit 2dbc631

Browse files
committed
Merge branch 'main' into feature/shortcutguidev2
2 parents 8e7be16 + c23dcb0 commit 2dbc631

File tree

128 files changed

+3138
-2172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+3138
-2172
lines changed

.github/actions/spell-check/expect.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,6 +1442,7 @@ secpol
14421442
securestring
14431443
SEEMASKINVOKEIDLIST
14441444
SELCHANGE
1445+
selfhost
14451446
SENDCHANGE
14461447
sendvirtualinput
14471448
serverside
@@ -1881,6 +1882,7 @@ winexe
18811882
winforms
18821883
winget
18831884
wingetcreate
1885+
wingetpkgs
18841886
Winhook
18851887
WINL
18861888
winlogon

.pipelines/v2/templates/job-build-ui-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ jobs:
123123
displayName: Stage UI Test Build Outputs
124124
inputs:
125125
sourceFolder: '$(Build.SourcesDirectory)'
126-
contents: '$(BuildPlatform)/$(BuildConfiguration)/**/*'
126+
contents: '**/$(BuildPlatform)/$(BuildConfiguration)/tests/**/*'
127127
targetFolder: '$(JobOutputDirectory)\$(BuildPlatform)\$(BuildConfiguration)'
128128

129129
- publish: $(JobOutputDirectory)

.pipelines/v2/templates/job-test-project.yml

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ parameters:
1111
- name: useLatestWebView2
1212
type: boolean
1313
default: false
14-
- name: useLatestOfficialBuild
15-
type: boolean
16-
default: true
17-
- name: useCurrentBranchBuild
18-
type: boolean
19-
default: false
14+
- name: buildSource
15+
type: string
16+
default: "latestMainOfficialBuild"
17+
displayName: "Build Source"
18+
- name: specificBuildId
19+
type: string
20+
default: "xxxx"
21+
displayName: "Build ID (for specific builds)"
2022
- name: uiTestModules
2123
type: object
2224
default: []
@@ -113,16 +115,17 @@ jobs:
113115
& '$(build.sourcesdirectory)\.pipelines\InstallWinAppDriver.ps1'
114116
displayName: Download and install WinAppDriver
115117
116-
- ${{ if eq(parameters.useLatestOfficialBuild, true) }}:
118+
- ${{ if ne(parameters.buildSource, 'buildNow') }}:
117119
- task: DownloadPipelineArtifact@2
118120
inputs:
119121
buildType: 'specific'
120122
project: 'Dart'
121123
definition: '76541'
122-
buildVersionToDownload: 'latestFromBranch'
123-
${{ if eq(parameters.useCurrentBranchBuild, true) }}:
124-
branchName: '$(Build.SourceBranch)'
124+
${{ if eq(parameters.buildSource, 'specificBuildId') }}:
125+
buildVersionToDownload: 'specific'
126+
buildId: '${{ parameters.specificBuildId }}'
125127
${{ else }}:
128+
buildVersionToDownload: 'latestFromBranch'
126129
branchName: 'refs/heads/main'
127130
artifactName: 'build-$(BuildPlatform)-Release'
128131
targetPath: '$(Build.ArtifactStagingDirectory)'
@@ -133,7 +136,7 @@ jobs:
133136
patterns: |
134137
**/PowerToysSetup*.exe
135138
136-
- ${{ if eq(parameters.useLatestOfficialBuild, true) }}:
139+
- ${{ if ne(parameters.buildSource, 'buildNow') }}:
137140
- ${{ if eq(parameters.installMode, 'peruser') }}:
138141
- pwsh: |-
139142
& "$(build.sourcesdirectory)\.pipelines\installPowerToys.ps1" -InstallMode "PerUser"
@@ -169,7 +172,7 @@ jobs:
169172
!**\UITests-FancyZones\**\UITests-FancyZonesEditor.dll
170173
env:
171174
platform: '$(TestPlatform)'
172-
useInstallerForTest: ${{ parameters.useLatestOfficialBuild }}
175+
useInstallerForTest: ${{ ne(parameters.buildSource, 'buildNow') }}
173176

174177
- ${{ if ne(length(parameters.uiTestModules), 0) }}:
175178
- ${{ each module in parameters.uiTestModules }}:
@@ -191,4 +194,4 @@ jobs:
191194
!**\UITests-FancyZones\**\UITests-FancyZonesEditor.dll
192195
env:
193196
platform: '$(TestPlatform)'
194-
useInstallerForTest: ${{ parameters.useLatestOfficialBuild }}
197+
useInstallerForTest: ${{ ne(parameters.buildSource, 'buildNow') }}

.pipelines/v2/templates/pipeline-ui-tests-automation.yml

Lines changed: 31 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -19,155 +19,40 @@ parameters:
1919
- name: useLatestWebView2
2020
type: boolean
2121
default: false
22-
- name: useLatestOfficialBuild
23-
type: boolean
24-
default: true
25-
- name: testBothInstallModes
26-
type: boolean
27-
default: true
28-
- name: useCurrentBranchBuild
29-
type: boolean
30-
default: false
22+
- name: buildSource
23+
type: string
24+
default: "latestMainOfficialBuild"
25+
displayName: "Build Source"
26+
values:
27+
- latestMainOfficialBuild
28+
- buildNow
29+
- specificBuildId
30+
- name: specificBuildId
31+
type: string
32+
default: 'xxxx'
33+
displayName: "Build ID (only used when Build Source = specificBuildId)"
3134
- name: uiTestModules
3235
type: object
3336
default: []
3437

3538
stages:
3639
- ${{ each platform in parameters.buildPlatforms }}:
37-
- ${{ if eq(parameters.useLatestOfficialBuild, false) }}:
38-
- stage: Build_${{ platform }}
39-
displayName: Build ${{ platform }}
40-
dependsOn: []
41-
jobs:
42-
- template: job-build-project.yml
43-
parameters:
44-
pool:
45-
${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
46-
name: SHINE-INT-L
47-
${{ else }}:
48-
name: SHINE-OSS-L
49-
${{ if eq(parameters.useVSPreview, true) }}:
50-
demands: ImageOverride -equals SHINE-VS17-Preview
51-
buildPlatforms:
52-
- ${{ platform }}
53-
buildConfigurations: [Release]
54-
enablePackageCaching: true
55-
enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }}
56-
runTests: false
57-
buildTests: true
58-
useVSPreview: ${{ parameters.useVSPreview }}
59-
timeoutInMinutes: 90
60-
61-
- ${{ if eq(parameters.useLatestOfficialBuild, true) }}:
62-
- stage: BuildUITests_${{ platform }}
63-
displayName: Build UI Tests Only
64-
dependsOn: []
65-
jobs:
66-
- template: job-build-ui-tests.yml
67-
parameters:
68-
pool:
69-
${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
70-
name: SHINE-INT-L
71-
${{ else }}:
72-
name: SHINE-OSS-L
73-
${{ if eq(parameters.useVSPreview, true) }}:
74-
demands: ImageOverride -equals SHINE-VS17-Preview
75-
buildPlatforms:
76-
- ${{ platform }}
77-
uiTestModules: ${{ parameters.uiTestModules }}
78-
79-
- ${{ if eq(platform, 'x64') }}:
80-
- stage: Test_x64Win10
81-
displayName: Test x64Win10
82-
${{ if eq(parameters.useLatestOfficialBuild, true) }}:
83-
dependsOn:
84-
- BuildUITests_${{ platform }}
85-
${{ else }}:
86-
dependsOn:
87-
- Build_${{ platform }}
88-
jobs:
89-
- template: job-test-project.yml
90-
parameters:
91-
platform: x64Win10
92-
configuration: Release
93-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
94-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
95-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
96-
uiTestModules: ${{ parameters.uiTestModules }}
97-
98-
# Additional per-user installation test (when both modes are enabled)
99-
- ${{ if and(eq(parameters.useLatestOfficialBuild, true), eq(parameters.testBothInstallModes, true)) }}:
100-
- template: job-test-project.yml
101-
parameters:
102-
platform: x64Win10
103-
configuration: Release
104-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
105-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
106-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
107-
uiTestModules: ${{ parameters.uiTestModules }}
108-
installMode: 'peruser'
109-
jobSuffix: '_PerUser'
110-
111-
- ${{ if eq(platform, 'x64') }}:
112-
- stage: Test_x64Win11
113-
displayName: Test x64Win11
114-
${{ if eq(parameters.useLatestOfficialBuild, true) }}:
115-
dependsOn:
116-
- BuildUITests_${{ platform }}
117-
${{ else }}:
118-
dependsOn:
119-
- Build_${{ platform }}
120-
jobs:
121-
- template: job-test-project.yml
122-
parameters:
123-
platform: x64Win11
124-
configuration: Release
125-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
126-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
127-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
128-
uiTestModules: ${{ parameters.uiTestModules }}
129-
130-
# Additional per-user installation test (when both modes are enabled)
131-
- ${{ if and(eq(parameters.useLatestOfficialBuild, true), eq(parameters.testBothInstallModes, true)) }}:
132-
- template: job-test-project.yml
133-
parameters:
134-
platform: x64Win11
135-
configuration: Release
136-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
137-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
138-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
139-
uiTestModules: ${{ parameters.uiTestModules }}
140-
installMode: 'peruser'
141-
jobSuffix: '_PerUser'
142-
143-
- ${{ if ne(platform, 'x64') }}:
144-
- stage: Test_${{ platform }}
145-
displayName: Test ${{ platform }}
146-
${{ if eq(parameters.useLatestOfficialBuild, true) }}:
147-
dependsOn:
148-
- BuildUITests_${{ platform }}
149-
${{ else }}:
150-
dependsOn:
151-
- Build_${{ platform }}
152-
jobs:
153-
- template: job-test-project.yml
154-
parameters:
155-
platform: ${{ platform }}
156-
configuration: Release
157-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
158-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
159-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
160-
uiTestModules: ${{ parameters.uiTestModules }}
161-
162-
# Additional per-user installation test (when both modes are enabled)
163-
- ${{ if and(eq(parameters.useLatestOfficialBuild, true), eq(parameters.testBothInstallModes, true)) }}:
164-
- template: job-test-project.yml
165-
parameters:
166-
platform: ${{ platform }}
167-
configuration: Release
168-
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
169-
useLatestOfficialBuild: ${{ parameters.useLatestOfficialBuild }}
170-
useCurrentBranchBuild: ${{ parameters.useCurrentBranchBuild }}
171-
uiTestModules: ${{ parameters.uiTestModules }}
172-
installMode: 'peruser'
173-
jobSuffix: '_PerUser'
40+
# Full build path: build PowerToys + UI tests + run tests
41+
- ${{ if eq(parameters.buildSource, 'buildNow') }}:
42+
- template: pipeline-ui-tests-full-build.yml
43+
parameters:
44+
platform: ${{ platform }}
45+
enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }}
46+
useVSPreview: ${{ parameters.useVSPreview }}
47+
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
48+
uiTestModules: ${{ parameters.uiTestModules }}
49+
50+
# Official build path: build UI tests only + download official build + run tests
51+
- ${{ if ne(parameters.buildSource, 'buildNow') }}:
52+
- template: pipeline-ui-tests-official-build.yml
53+
parameters:
54+
platform: ${{ platform }}
55+
buildSource: ${{ parameters.buildSource }}
56+
specificBuildId: ${{ parameters.specificBuildId }}
57+
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
58+
uiTestModules: ${{ parameters.uiTestModules }}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Template for full build path: Build PowerToys + Build UI Tests + Run Tests
2+
parameters:
3+
- name: platform
4+
type: string
5+
- name: enableMsBuildCaching
6+
type: boolean
7+
default: false
8+
- name: useVSPreview
9+
type: boolean
10+
default: false
11+
- name: useLatestWebView2
12+
type: boolean
13+
default: false
14+
- name: uiTestModules
15+
type: object
16+
default: []
17+
18+
stages:
19+
# Stage 1: Build full PowerToys project
20+
- stage: Build_${{ parameters.platform }}
21+
displayName: Build PowerToys ${{ parameters.platform }}
22+
dependsOn: []
23+
jobs:
24+
- template: job-build-project.yml
25+
parameters:
26+
pool:
27+
${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}:
28+
name: SHINE-INT-L
29+
${{ else }}:
30+
name: SHINE-OSS-L
31+
${{ if eq(parameters.useVSPreview, true) }}:
32+
demands: ImageOverride -equals SHINE-VS17-Preview
33+
buildPlatforms:
34+
- ${{ parameters.platform }}
35+
buildConfigurations: [Release]
36+
enablePackageCaching: true
37+
enableMsBuildCaching: ${{ parameters.enableMsBuildCaching }}
38+
runTests: false
39+
buildTests: true
40+
useVSPreview: ${{ parameters.useVSPreview }}
41+
timeoutInMinutes: 90
42+
43+
# Stage 2: Run UI Tests
44+
- ${{ if eq(parameters.platform, 'x64') }}:
45+
- stage: Test_x64Win10_FullBuild
46+
displayName: Test x64Win10 (Full Build)
47+
dependsOn: Build_${{ parameters.platform }}
48+
jobs:
49+
- template: job-test-project.yml
50+
parameters:
51+
platform: x64Win10
52+
configuration: Release
53+
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
54+
buildSource: 'buildNow'
55+
uiTestModules: ${{ parameters.uiTestModules }}
56+
57+
- stage: Test_x64Win11_FullBuild
58+
displayName: Test x64Win11 (Full Build)
59+
dependsOn: Build_${{ parameters.platform }}
60+
jobs:
61+
- template: job-test-project.yml
62+
parameters:
63+
platform: x64Win11
64+
configuration: Release
65+
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
66+
buildSource: 'buildNow'
67+
uiTestModules: ${{ parameters.uiTestModules }}
68+
69+
- ${{ if ne(parameters.platform, 'x64') }}:
70+
- stage: Test_${{ parameters.platform }}_FullBuild
71+
displayName: Test ${{ parameters.platform }} (Full Build)
72+
dependsOn: Build_${{ parameters.platform }}
73+
jobs:
74+
- template: job-test-project.yml
75+
parameters:
76+
platform: ${{ parameters.platform }}
77+
configuration: Release
78+
useLatestWebView2: ${{ parameters.useLatestWebView2 }}
79+
buildSource: 'buildNow'
80+
uiTestModules: ${{ parameters.uiTestModules }}

0 commit comments

Comments
 (0)