generated from Kentico/repo-template
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #29 from Kentico/feat/automatic_E2E_testing
Automatic e2e testing
- Loading branch information
Showing
35 changed files
with
1,569 additions
and
602 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -65,4 +65,4 @@ jobs: | |
dotnet test ` | ||
--configuration Release ` | ||
--no-build ` | ||
--no-restore | ||
--no-restore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
name: "E2E: Build and Test" | ||
|
||
on: | ||
schedule: | ||
- cron: '0 10 * * 5' # Runs every Friday at 10:00 UTC | ||
|
||
jobs: | ||
build_and_test: | ||
name: Test E2E | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: pwsh | ||
|
||
env: | ||
ASPNETCORE_ENVIRONMENT: CI | ||
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | ||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | ||
DOTNET_NOLOGO: 1 | ||
PROJECT_NAME: DancingGoat | ||
DB_NAME: XByK_DancingGoat_Shopify | ||
ASPNETCORE_URLS: https://localhost:14065 | ||
STATUS_CHECK_URL: https://localhost:14065/status | ||
CMSSHOPIFYCONFIG__ADMINAPIKEY: ${{ secrets.ADMIN_API_KEY }} | ||
CMSSHOPIFYCONFIG__SHOPIFYURL: ${{ secrets.SHOPIFY_URL }} | ||
CMSSHOPIFYCONFIG__STOREFRONTAPIKEY: ${{ secrets.STOREFRONT_API_KEY }} | ||
CMSSHOPIFYCONFIG__STOREFRONTAPIVERSION: ${{ secrets.STOREFRONT_API_VERSION }} | ||
CMSSHOPIFYCONFIG__STOREPASSWORD: ${{ secrets.SHOPIFY_STORE_PASSWORD }} | ||
XPERIENCE_BY_KENTICO_LICENSE: ${{ secrets.XPERIENCE_BY_KENTICO_LICENSE }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v4 | ||
with: | ||
global-json-file: global.json | ||
|
||
- name: Setup Node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: lts/* | ||
|
||
- name: Install NPM | ||
run: | | ||
cd test/Playwright | ||
npm ci | ||
npx playwright install --with-deps | ||
cd ../.. | ||
- name: Install dependencies | ||
run: | | ||
dotnet restore ` | ||
--locked-mode | ||
- name: Build Solution | ||
run: | | ||
dotnet build ` | ||
--configuration Release ` | ||
-p:XbyKVersion=* | ||
- name: Get Database Backup Name | ||
run: | | ||
$latestBackup = Get-Content -Path "./database/backups.txt" -TotalCount 1 | ||
"DATABASE_BACKUP_FILENAME=$latestBackup" >> $env:GITHUB_ENV | ||
- name: Extract Database Backup | ||
run: | | ||
Expand-Archive ` | ||
-Path "./database/${{ env.DATABASE_BACKUP_FILENAME }}.zip" ` | ||
-DestinationPath "./database" | ||
- name: Install a SQL Server suite of tools (SQLEngine, SQLPackage) | ||
uses: potatoqualitee/mssqlsuite@9a0136e208df60b8ecb62909f076bc34854fa55a # set as a commit hash for security - v1.7 | ||
with: | ||
install: sqlpackage, sqlengine | ||
sa-password: Pass@12345 | ||
version: 2022 | ||
|
||
- name: Restore Database .bak | ||
run: | | ||
docker exec sql mkdir /var/opt/mssql/backup | ||
docker cp "./database/${{ env.DATABASE_BACKUP_FILENAME }}" sql:/var/opt/mssql/backup | ||
sqlcmd ` | ||
-S localhost ` | ||
-d master ` | ||
-U "sa" ` | ||
-P "Pass@12345" ` | ||
-Q "RESTORE DATABASE [${{env.DB_NAME}}] FROM DISK='/var/opt/mssql/backup/${{ env.DATABASE_BACKUP_FILENAME }}' WITH MOVE 'XByK_DancingGoat_Shopify' TO '/var/opt/mssql/data/${{env.DB_NAME}}.mdf', MOVE 'XByK_DancingGoat_Shopify_log' TO '/var/opt/mssql/data/${{env.DB_NAME}}_log.ldf'" | ||
if: endsWith(env.DATABASE_BACKUP_FILENAME, '.bak') | ||
|
||
- name: Import license key to DB | ||
run: | | ||
sqlcmd ` | ||
-S localhost ` | ||
-d ${{env.DB_NAME}} ` | ||
-U "sa" ` | ||
-P "Pass@12345" ` | ||
-Q "UPDATE CMS_SettingsKey SET KeyValue='${{ env.XPERIENCE_BY_KENTICO_LICENSE }}' WHERE KeyName='CMSLicenseKey'" | ||
- name: Restore CI Repository | ||
working-directory: "./scripts" | ||
run: | | ||
./UpdateAndRestoreCI.ps1 | ||
- name: Publish Application | ||
run: | | ||
dotnet publish ` | ||
./examples/DancingGoat-Shopify ` | ||
-c Release ` | ||
-o ./publish ` | ||
--no-build ` | ||
--no-restore | ||
- name: Install Azurite | ||
id: azuright | ||
uses: potatoqualitee/azuright@e56d2754eb15218d507961493bc83ca037216887 # set as a commit hash for security - v1.1 | ||
|
||
- name: Test Solution | ||
run: | | ||
dotnet test ` | ||
--configuration Release ` | ||
--no-build ` | ||
--no-restore | ||
- name: Run Application and E2E Tests | ||
run: | | ||
# Run the ASP.NET Core app as a background job | ||
cd ./publish | ||
Start-Job -ScriptBlock { dotnet ./${{ env.PROJECT_NAME }}.dll } -Name ${{ env.PROJECT_NAME }} | ||
Receive-Job -Name ${{ env.PROJECT_NAME }} | ||
cd ../ | ||
# The ASP.NET Core app can take a few seconds to start, so we delay running tests | ||
# until it is ready, and fail if we go over a maximum wait time | ||
$limit = 10 | ||
$attempts = 0 | ||
$success = $false | ||
while ($attempts -lt $limit -and -not $success) { | ||
Start-Sleep -Seconds 1 | ||
try { | ||
$response = Invoke-WebRequest -Uri ${{ env.STATUS_CHECK_URL }} -Method Get -SkipCertificateCheck | ||
if ($response.StatusCode -eq 200) { | ||
Write-Output "Application is ready." | ||
$success = $true | ||
} | ||
} | ||
catch { | ||
Write-Output "Attempt $attempts - Application not ready yet." | ||
} | ||
$attempts++ | ||
} | ||
if (-not $success) { | ||
Write-Output "Application did not respond in time." | ||
exit 1 | ||
} | ||
# Sleep for finishing initialization | ||
Start-Sleep -Seconds 10 | ||
# Run the E2E tests | ||
cd test/Playwright | ||
npx playwright test | ||
cd ../.. | ||
# Stop the background ASP.NET Core application | ||
Receive-Job -Name ${{ env.PROJECT_NAME }} | ||
Stop-Job -Name ${{ env.PROJECT_NAME }} | ||
Remove-Job -Name ${{ env.PROJECT_NAME }} | ||
- uses: actions/upload-artifact@v4 | ||
if: ${{ !cancelled() }} | ||
with: | ||
name: playwright-report | ||
path: ./test/Playwright/playwright-report/ | ||
retention-days: 30 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
XByK_DancingGoat_Shopify.bak |
92 changes: 46 additions & 46 deletions
92
...global/cms.alternativeform/cms.class_shopify.currencyformat/shopifycurrencyformatform.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,47 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<cms.alternativeform> | ||
<FormClassID> | ||
<CodeName>Shopify.CurrencyFormat</CodeName> | ||
<GUID>996f2159-f3fd-4ec1-99c6-c6d62fa12705</GUID> | ||
<ObjectType>cms.class</ObjectType> | ||
</FormClassID> | ||
<FormDefinition> | ||
<form> | ||
<field column="CurrencyFormatID" guid="d29aad73-40e2-47b5-a315-d84f87354bb8" enabled="" /> | ||
<field column="CurrencyCode" enabled="true" guid="ceff5511-08b8-4072-8089-5ff7010b9248" visible="true"> | ||
<settings> | ||
<controlname>Kentico.Administration.TextInput</controlname> | ||
</settings> | ||
<validationrulesdata> | ||
<ValidationRuleConfiguration> | ||
<ValidationRuleIdentifier>Kentico.Administration.RequiredValue</ValidationRuleIdentifier> | ||
<RuleValues /> | ||
</ValidationRuleConfiguration> | ||
</validationrulesdata> | ||
<properties> | ||
<explanationtextashtml>False</explanationtextashtml> | ||
<fieldcaption>Currency code</fieldcaption> | ||
<fielddescriptionashtml>False</fielddescriptionashtml> | ||
</properties> | ||
</field> | ||
<field column="CurrencyPriceFormat" enabled="true" guid="3bf597d9-ce11-411b-8b5e-232b76ee26cc" visible="true"> | ||
<settings> | ||
<controlname>Kentico.Administration.TextInput</controlname> | ||
<WatermarkText>$0.00</WatermarkText> | ||
</settings> | ||
<properties> | ||
<explanationtextashtml>False</explanationtextashtml> | ||
<fieldcaption>Currency price format</fieldcaption> | ||
<fielddescription> | ||
<![CDATA[Currency format will be used in decimal.ToString method to convert the price value to string.]]> | ||
</fielddescription> | ||
<fielddescriptionashtml>False</fielddescriptionashtml> | ||
</properties> | ||
</field> | ||
</form> | ||
</FormDefinition> | ||
<FormDisplayName>Shopify currency format form</FormDisplayName> | ||
<FormGUID>fc4f83bf-6a68-4c18-8e1e-77763f6ea36f</FormGUID> | ||
<FormIsCustom>True</FormIsCustom> | ||
<FormName>ShopifyCurrencyFormatForm</FormName> | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<cms.alternativeform> | ||
<FormClassID> | ||
<CodeName>Shopify.CurrencyFormat</CodeName> | ||
<GUID>996f2159-f3fd-4ec1-99c6-c6d62fa12705</GUID> | ||
<ObjectType>cms.class</ObjectType> | ||
</FormClassID> | ||
<FormDefinition> | ||
<form> | ||
<field column="CurrencyFormatID" guid="d29aad73-40e2-47b5-a315-d84f87354bb8" enabled="" /> | ||
<field column="CurrencyCode" enabled="true" guid="ceff5511-08b8-4072-8089-5ff7010b9248" visible="true"> | ||
<settings> | ||
<controlname>Kentico.Administration.TextInput</controlname> | ||
</settings> | ||
<validationrulesdata> | ||
<ValidationRuleConfiguration> | ||
<ValidationRuleIdentifier>Kentico.Administration.RequiredValue</ValidationRuleIdentifier> | ||
<RuleValues /> | ||
</ValidationRuleConfiguration> | ||
</validationrulesdata> | ||
<properties> | ||
<explanationtextashtml>False</explanationtextashtml> | ||
<fieldcaption>Currency code</fieldcaption> | ||
<fielddescriptionashtml>False</fielddescriptionashtml> | ||
</properties> | ||
</field> | ||
<field column="CurrencyPriceFormat" enabled="true" guid="3bf597d9-ce11-411b-8b5e-232b76ee26cc" visible="true"> | ||
<settings> | ||
<controlname>Kentico.Administration.TextInput</controlname> | ||
<WatermarkText>$0.00</WatermarkText> | ||
</settings> | ||
<properties> | ||
<explanationtextashtml>False</explanationtextashtml> | ||
<fieldcaption>Currency price format</fieldcaption> | ||
<fielddescription> | ||
<![CDATA[Currency format will be used in decimal.ToString method to convert the price value to string.]]> | ||
</fielddescription> | ||
<fielddescriptionashtml>False</fielddescriptionashtml> | ||
</properties> | ||
</field> | ||
</form> | ||
</FormDefinition> | ||
<FormDisplayName>Shopify currency format form</FormDisplayName> | ||
<FormGUID>fc4f83bf-6a68-4c18-8e1e-77763f6ea36f</FormGUID> | ||
<FormIsCustom>True</FormIsCustom> | ||
<FormName>ShopifyCurrencyFormatForm</FormName> | ||
</cms.alternativeform> |
60 changes: 30 additions & 30 deletions
60
...es/DancingGoat-Shopify/App_Data/CIRepository/@global/cms.class/shopify.currencyformat.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,31 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<cms.class> | ||
<ClassCodeGenerationSettings> | ||
<Data> | ||
<CodeNameColumn>CurrencyCode</CodeNameColumn> | ||
<DisplayNameColumn>CurrencyCode</DisplayNameColumn> | ||
<ObjectType>Shopify.CurrencyFormat</ObjectType> | ||
<UseGuidHashtable>False</UseGuidHashtable> | ||
<UseIdHashtable>False</UseIdHashtable> | ||
<UseNameHashtable>False</UseNameHashtable> | ||
</Data> | ||
</ClassCodeGenerationSettings> | ||
<ClassDisplayName>Shopify currency format</ClassDisplayName> | ||
<ClassFormDefinition> | ||
<form> | ||
<field column="CurrencyFormatID" columntype="integer" enabled="true" guid="d29aad73-40e2-47b5-a315-d84f87354bb8" isPK="true" /> | ||
<field column="CurrencyCode" columnprecision="0" columnsize="5" columntype="text" enabled="true" guid="ceff5511-08b8-4072-8089-5ff7010b9248" /> | ||
<field column="CurrencyPriceFormat" columnprecision="0" columnsize="200" columntype="text" enabled="true" guid="3bf597d9-ce11-411b-8b5e-232b76ee26cc" /> | ||
</form> | ||
</ClassFormDefinition> | ||
<ClassGUID>996f2159-f3fd-4ec1-99c6-c6d62fa12705</ClassGUID> | ||
<ClassHasUnmanagedDbSchema>False</ClassHasUnmanagedDbSchema> | ||
<ClassName>Shopify.CurrencyFormat</ClassName> | ||
<ClassResourceID> | ||
<CodeName>ShopifyStoreConfiguration</CodeName> | ||
<GUID>3b34600d-ecb1-4048-bdf0-4ec6298ddd28</GUID> | ||
<ObjectType>cms.resource</ObjectType> | ||
</ClassResourceID> | ||
<ClassTableName>Shopify_CurrencyFormat</ClassTableName> | ||
<ClassType>Other</ClassType> | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<cms.class> | ||
<ClassCodeGenerationSettings> | ||
<Data> | ||
<CodeNameColumn>CurrencyCode</CodeNameColumn> | ||
<DisplayNameColumn>CurrencyCode</DisplayNameColumn> | ||
<ObjectType>Shopify.CurrencyFormat</ObjectType> | ||
<UseGuidHashtable>False</UseGuidHashtable> | ||
<UseIdHashtable>False</UseIdHashtable> | ||
<UseNameHashtable>False</UseNameHashtable> | ||
</Data> | ||
</ClassCodeGenerationSettings> | ||
<ClassDisplayName>Shopify currency format</ClassDisplayName> | ||
<ClassFormDefinition> | ||
<form> | ||
<field column="CurrencyFormatID" columntype="integer" enabled="true" guid="d29aad73-40e2-47b5-a315-d84f87354bb8" isPK="true" /> | ||
<field column="CurrencyCode" columnprecision="0" columnsize="5" columntype="text" enabled="true" guid="ceff5511-08b8-4072-8089-5ff7010b9248" /> | ||
<field column="CurrencyPriceFormat" columnprecision="0" columnsize="200" columntype="text" enabled="true" guid="3bf597d9-ce11-411b-8b5e-232b76ee26cc" /> | ||
</form> | ||
</ClassFormDefinition> | ||
<ClassGUID>996f2159-f3fd-4ec1-99c6-c6d62fa12705</ClassGUID> | ||
<ClassHasUnmanagedDbSchema>False</ClassHasUnmanagedDbSchema> | ||
<ClassName>Shopify.CurrencyFormat</ClassName> | ||
<ClassResourceID> | ||
<CodeName>ShopifyStoreConfiguration</CodeName> | ||
<GUID>3b34600d-ecb1-4048-bdf0-4ec6298ddd28</GUID> | ||
<ObjectType>cms.resource</ObjectType> | ||
</ClassResourceID> | ||
<ClassTableName>Shopify_CurrencyFormat</ClassTableName> | ||
<ClassType>Other</ClassType> | ||
</cms.class> |
Oops, something went wrong.