V16 QA Implement new release tag for E2E tests (#19697)
* Removed this as these tests are covered in other files * Added release tags * Make all tests with @smoke and @release tags run in the pipeline * Updated npx command * Updated npx command * Updated npx command * Fixed failed tests related to document type folder * Cleaned up * Used grep in yaml file instead of package.json file * Updated yml file * Updated testCommand * Fixed command * Added releaseTest command * Added another job to run regression test in the release build * Fixed comments * Updated name of test job * Make all release tests run in the pipeline * Updated warning message * Reverted npm command
This commit is contained in:
@@ -513,9 +513,9 @@ stages:
|
||||
UMBRACO__CMS__WEBROUTING__UMBRACOAPPLICATIONURL: https://localhost:44331/
|
||||
ASPNETCORE_URLS: https://localhost:44331
|
||||
jobs:
|
||||
# E2E Tests
|
||||
# E2E Smoke Tests
|
||||
- job:
|
||||
displayName: E2E Tests (SQLite)
|
||||
displayName: E2E Smoke Tests (SQLite)
|
||||
# currently disabled due to DB locks randomly occuring.
|
||||
condition: eq(${{parameters.sqliteAcceptanceTests}}, True)
|
||||
variables:
|
||||
@@ -678,7 +678,7 @@ stages:
|
||||
testRunTitle: "$(Agent.JobName)"
|
||||
|
||||
- job:
|
||||
displayName: E2E Tests (SQL Server)
|
||||
displayName: E2E Smoke Tests (SQL Server)
|
||||
variables:
|
||||
# Connection string
|
||||
CONNECTIONSTRINGS__UMBRACODBDSN: Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Umbraco.mdf;Integrated Security=True
|
||||
@@ -862,6 +862,176 @@ stages:
|
||||
searchFolder: "tests/Umbraco.Tests.AcceptanceTest/results"
|
||||
testRunTitle: "$(Agent.JobName)"
|
||||
|
||||
- job:
|
||||
displayName: E2E Release Tests (SQL Server)
|
||||
variables:
|
||||
# Connection string
|
||||
CONNECTIONSTRINGS__UMBRACODBDSN: Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Umbraco.mdf;Integrated Security=True
|
||||
CONNECTIONSTRINGS__UMBRACODBDSN_PROVIDERNAME: Microsoft.Data.SqlClient
|
||||
condition: eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True')
|
||||
strategy:
|
||||
matrix:
|
||||
WindowsPart1Of3:
|
||||
vmImage: "windows-latest"
|
||||
testCommand: "npm run releaseTest -- --shard=1/3"
|
||||
WindowsPart2Of3:
|
||||
vmImage: "windows-latest"
|
||||
testCommand: "npm run releaseTest -- --shard=2/3"
|
||||
WindowsPart3Of3:
|
||||
vmImage: "windows-latest"
|
||||
testCommand: "npm run releaseTest -- --shard=3/3"
|
||||
pool:
|
||||
vmImage: $(vmImage)
|
||||
steps:
|
||||
# Setup test environment
|
||||
- task: DownloadPipelineArtifact@2
|
||||
displayName: Download NuGet artifacts
|
||||
inputs:
|
||||
artifact: nupkg
|
||||
path: $(Agent.BuildDirectory)/app/nupkg
|
||||
|
||||
- task: NodeTool@0
|
||||
displayName: Use Node.js $(nodeVersion)
|
||||
inputs:
|
||||
versionSpec: $(nodeVersion)
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: Use .NET SDK from global.json
|
||||
inputs:
|
||||
useGlobalJson: true
|
||||
|
||||
- pwsh: |
|
||||
"UMBRACO_USER_LOGIN=$(UMBRACO__CMS__UNATTENDED__UNATTENDEDUSEREMAIL)
|
||||
UMBRACO_USER_PASSWORD=$(UMBRACO__CMS__UNATTENDED__UNATTENDEDUSERPASSWORD)
|
||||
URL=$(ASPNETCORE_URLS)
|
||||
STORAGE_STAGE_PATH=$(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest/playwright/.auth/user.json
|
||||
CONSOLE_ERRORS_PATH=$(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest/console-errors.json" | Out-File .env
|
||||
displayName: Generate .env
|
||||
workingDirectory: $(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest
|
||||
|
||||
# Cache and restore NPM packages
|
||||
- task: Cache@2
|
||||
displayName: Cache NPM packages
|
||||
inputs:
|
||||
key: 'npm_e2e | "$(Agent.OS)" | $(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest/package-lock.json'
|
||||
restoreKeys: |
|
||||
npm_e2e | "$(Agent.OS)"
|
||||
npm_e2e
|
||||
path: $(npm_config_cache)
|
||||
|
||||
- script: npm ci --no-fund --no-audit --prefer-offline
|
||||
workingDirectory: $(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest
|
||||
displayName: Restore NPM packages
|
||||
|
||||
# Build application
|
||||
- pwsh: |
|
||||
$cmsVersion = "$(Build.BuildNumber)" -replace "\+",".g"
|
||||
dotnet new nugetconfig
|
||||
dotnet nuget add source ./nupkg --name Local
|
||||
dotnet new install Umbraco.Templates::$cmsVersion
|
||||
dotnet new umbraco --name UmbracoProject --version $cmsVersion --exclude-gitignore --no-restore --no-update-check
|
||||
dotnet restore UmbracoProject
|
||||
cp $(Build.SourcesDirectory)/tests/Umbraco.Tests.AcceptanceTest.UmbracoProject/*.cs UmbracoProject
|
||||
dotnet build UmbracoProject --configuration $(buildConfiguration) --no-restore
|
||||
dotnet dev-certs https
|
||||
displayName: Build application
|
||||
workingDirectory: $(Agent.BuildDirectory)/app
|
||||
|
||||
# Start SQL Server
|
||||
- powershell: docker run --name mssql -d -p 1433:1433 -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=$(SA_PASSWORD)" mcr.microsoft.com/mssql/server:2022-latest
|
||||
displayName: Start SQL Server Docker image (Linux)
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
|
||||
|
||||
- pwsh: SqlLocalDB start MSSQLLocalDB
|
||||
displayName: Start SQL Server LocalDB (Windows)
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
|
||||
|
||||
# Run application
|
||||
- bash: |
|
||||
nohup dotnet run --project UmbracoProject --configuration $(buildConfiguration) --no-build --no-launch-profile > $(Build.ArtifactStagingDirectory)/playwright.log 2>&1 &
|
||||
echo "##vso[task.setvariable variable=AcceptanceTestProcessId]$!"
|
||||
displayName: Run application (Linux)
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
|
||||
workingDirectory: $(Agent.BuildDirectory)/app
|
||||
|
||||
- pwsh: |
|
||||
$process = Start-Process dotnet "run --project UmbracoProject --configuration $(buildConfiguration) --no-build --no-launch-profile 2>&1" -PassThru -NoNewWindow -RedirectStandardOutput $(Build.ArtifactStagingDirectory)/playwright.log
|
||||
Write-Host "##vso[task.setvariable variable=AcceptanceTestProcessId]$($process.Id)"
|
||||
displayName: Run application (Windows)
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))
|
||||
workingDirectory: $(Agent.BuildDirectory)/app
|
||||
|
||||
# Wait for application to start responding to requests
|
||||
- pwsh: npx wait-on -v --interval 1000 --timeout 120000 $(ASPNETCORE_URLS)
|
||||
displayName: Wait for application
|
||||
workingDirectory: tests/Umbraco.Tests.AcceptanceTest
|
||||
|
||||
# Install Playwright and dependencies
|
||||
- pwsh: npx playwright install chromium
|
||||
displayName: Install Playwright only with Chromium browser
|
||||
workingDirectory: tests/Umbraco.Tests.AcceptanceTest
|
||||
|
||||
# Test
|
||||
- pwsh: $(testCommand)
|
||||
displayName: Run Playwright tests
|
||||
workingDirectory: tests/Umbraco.Tests.AcceptanceTest
|
||||
env:
|
||||
CI: true
|
||||
CommitId: $(Build.SourceVersion)
|
||||
AgentOs: $(Agent.OS)
|
||||
|
||||
# Stop application
|
||||
- bash: kill -15 $(AcceptanceTestProcessId)
|
||||
displayName: Stop application (Linux)
|
||||
condition: and(ne(variables.AcceptanceTestProcessId, ''), eq(variables['Agent.OS'], 'Linux'))
|
||||
|
||||
- pwsh: Stop-Process -Id $(AcceptanceTestProcessId)
|
||||
displayName: Stop application (Windows)
|
||||
condition: and(ne(variables.AcceptanceTestProcessId, ''), eq(variables['Agent.OS'], 'Windows_NT'))
|
||||
|
||||
# Stop SQL Server
|
||||
- pwsh: docker stop mssql
|
||||
displayName: Stop SQL Server Docker image (Linux)
|
||||
condition: eq(variables['Agent.OS'], 'Linux')
|
||||
|
||||
- pwsh: SqlLocalDB stop MSSQLLocalDB
|
||||
displayName: Stop SQL Server LocalDB (Windows)
|
||||
condition: eq(variables['Agent.OS'], 'Windows_NT')
|
||||
|
||||
# Copy artifacts
|
||||
- pwsh: |
|
||||
if (Test-Path tests/Umbraco.Tests.AcceptanceTest/results/*) {
|
||||
Copy-Item tests/Umbraco.Tests.AcceptanceTest/results/* $(Build.ArtifactStagingDirectory) -Recurse
|
||||
}
|
||||
displayName: Copy Playwright results
|
||||
condition: succeededOrFailed()
|
||||
|
||||
# Copy console error log
|
||||
- pwsh: |
|
||||
if (Test-Path tests/Umbraco.Tests.AcceptanceTest/console-errors.json) {
|
||||
Copy-Item tests/Umbraco.Tests.AcceptanceTest/console-errors.json $(Build.ArtifactStagingDirectory)
|
||||
}
|
||||
displayName: Copy console error log
|
||||
condition: succeededOrFailed()
|
||||
|
||||
# Publish test artifacts
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: Publish test artifacts
|
||||
condition: succeededOrFailed()
|
||||
inputs:
|
||||
targetPath: $(Build.ArtifactStagingDirectory)
|
||||
artifact: "Acceptance Test Results - $(Agent.JobName) - Attempt #$(System.JobAttempt)"
|
||||
|
||||
# Publish test results
|
||||
- task: PublishTestResults@2
|
||||
displayName: "Publish test results"
|
||||
condition: succeededOrFailed()
|
||||
inputs:
|
||||
testResultsFormat: 'JUnit'
|
||||
testResultsFiles: '*.xml'
|
||||
searchFolder: "tests/Umbraco.Tests.AcceptanceTest/results"
|
||||
testRunTitle: "$(Agent.JobName)"
|
||||
|
||||
###############################################
|
||||
## Release
|
||||
###############################################
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
"all": "npx playwright test",
|
||||
"createTest": "node createTest.js",
|
||||
"smokeTest": "npx playwright test DefaultConfig --grep \"@smoke\"",
|
||||
"smokeTestSqlite": "npx playwright test DefaultConfig --grep \"@smoke\" --grep-invert \"Users\""
|
||||
"smokeTestSqlite": "npx playwright test DefaultConfig --grep \"@smoke\" --grep-invert \"Users\"",
|
||||
"releaseTest": "npx playwright test DefaultConfig --grep \"@release\""
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.50",
|
||||
|
||||
@@ -58,7 +58,7 @@ test('can publish content with the approved color data type', async ({umbracoApi
|
||||
expect(contentData.values).toEqual([]);
|
||||
});
|
||||
|
||||
test('can create content with the custom approved color data type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create content with the custom approved color data type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const customDataTypeName = 'CustomApprovedColor';
|
||||
const colorValue = 'd73737';
|
||||
|
||||
@@ -80,7 +80,7 @@ test('can create content with the custom checkbox list data type', async ({umbra
|
||||
expect(contentData.values[0].value).toEqual([optionValues[0]]);
|
||||
});
|
||||
|
||||
test('can not publish a mandatory checkbox list with an empty value', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not publish a mandatory checkbox list with an empty value', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const optionValues = ['testOption1', 'testOption2'];
|
||||
const customDataTypeId = await umbracoApi.dataType.createCheckboxListDataType(customDataTypeName, optionValues);
|
||||
|
||||
@@ -265,7 +265,7 @@ test('can create content with the custom data type with slider property editor',
|
||||
expect(contentData.values).toEqual([]);
|
||||
});
|
||||
|
||||
test('can change slider value in the content section', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can change slider value in the content section', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
customDataTypeName = 'Slider';
|
||||
const sliderValue = 10;
|
||||
|
||||
@@ -83,7 +83,7 @@ for (const dataTypeName of dataTypeNames) {
|
||||
});
|
||||
}
|
||||
|
||||
test('can not publish a mandatory dropdown with an empty value', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not publish a mandatory dropdown with an empty value', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const optionValues = ['testOption1', 'testOption2', 'testOption3'];
|
||||
const customDataTypeId = await umbracoApi.dataType.createDropdownDataType(customDataTypeName, false, optionValues);
|
||||
|
||||
@@ -18,7 +18,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can save content with a image media picker', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create content with a image media picker', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const expectedState = 'Draft';
|
||||
const dataType = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
@@ -60,7 +60,7 @@ test('can publish content with a image media picker', async ({umbracoApi, umbrac
|
||||
expect(contentData.variants[0].state).toBe(expectedState);
|
||||
});
|
||||
|
||||
test('can add an image to the image media picker', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add an image to the image media picker', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataType = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
|
||||
@@ -170,7 +170,7 @@ test('can create content with the media link', async ({umbracoApi, umbracoUi}) =
|
||||
await umbracoApi.media.ensureNameNotExists(mediaFileName);
|
||||
});
|
||||
|
||||
test('can add multiple links in the content', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add multiple links in the content', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
@@ -190,6 +190,7 @@ test('can add multiple links in the content', async ({umbracoApi, umbracoUi}) =>
|
||||
await umbracoUi.content.selectMediaWithName(mediaFileName);
|
||||
await umbracoUi.content.clickChooseModalButton();
|
||||
await umbracoUi.content.clickAddButton();
|
||||
await umbracoUi.waitForTimeout(500); // Wait for the media link to be added
|
||||
// Add external link
|
||||
await umbracoUi.content.clickAddMultiURLPickerButton();
|
||||
await umbracoUi.content.clickManualLinkButton();
|
||||
@@ -267,7 +268,7 @@ test('can edit the URL picker in the content', async ({umbracoApi, umbracoUi}) =
|
||||
expect(contentData.values[0].value[0].url).toEqual(link);
|
||||
});
|
||||
|
||||
test('cannot submit an empty link', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot submit an empty link', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
@@ -288,7 +289,7 @@ test('cannot submit an empty link', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.content.isTextWithMessageVisible(ConstantHelper.validationMessages.emptyLinkPicker);
|
||||
});
|
||||
|
||||
test('cannot update the URL picker with an empty link', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot update the URL picker with an empty link', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -69,7 +69,7 @@ test('can publish content with multiple image media picker data type', async ({u
|
||||
expect(contentData.values).toEqual([]);
|
||||
});
|
||||
|
||||
test('can add multiple images to the multiple image media picker', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add multiple images to the multiple image media picker', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -97,7 +97,7 @@ test('can add multiple media files to the multiple media picker', async ({umbrac
|
||||
expect(contentData.values[0].value[1].mediaTypeAlias).toEqual(secondMediaTypeName);
|
||||
});
|
||||
|
||||
test('can remove a media picker in the content', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can remove a media picker in the content', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -17,7 +17,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can create content with the numeric data type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create content with the numeric data type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const expectedState = 'Draft';
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
|
||||
@@ -84,7 +84,7 @@ test('can create content with the custom radiobox data type', async ({umbracoApi
|
||||
expect(contentData.values[0].value).toEqual(optionValues[0]);
|
||||
});
|
||||
|
||||
test('can not publish mandatory radiobox with an empty value', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not publish mandatory radiobox with an empty value', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const customDataTypeId = await umbracoApi.dataType.createRadioboxDataType(customDataTypeName, optionValues);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, customDataTypeName, customDataTypeId, 'Test Group', false, false, true);
|
||||
|
||||
@@ -41,7 +41,7 @@ test('can create content with one tag', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(contentData.values[0].value).toEqual([tagsName[0]]);
|
||||
});
|
||||
|
||||
test('can publish content with multiple tags', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can publish content with multiple tags', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const expectedState = 'Published';
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
|
||||
@@ -80,7 +80,7 @@ test('can input text into the textarea', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(contentData.values[0].value).toEqual(text);
|
||||
});
|
||||
|
||||
test('cannot input the text that exceeds the allowed amount of characters', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot input the text that exceeds the allowed amount of characters', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const maxChars = 100;
|
||||
const textExceedMaxChars = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis porttitor orci id cursus. Nulla';
|
||||
|
||||
@@ -61,7 +61,7 @@ test('can publish content with the true/false data type', async ({umbracoApi, um
|
||||
expect(contentData.values).toEqual([]);
|
||||
});
|
||||
|
||||
test('can toggle the true/false value in the content ', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can toggle the true/false value in the content', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -66,7 +66,7 @@ const uploadFiles = [
|
||||
{fileExtension: 'doc', fileName: 'ArticleDOC.doc'}
|
||||
];
|
||||
for (const uploadFile of uploadFiles) {
|
||||
test(`can upload an article with the ${uploadFile.fileExtension} extension in the content`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can upload an article with the ${uploadFile.fileExtension} extension in the content`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -67,7 +67,7 @@ const uploadFiles = [
|
||||
{fileExtension: 'opus', fileName: 'AudioOPUS.opus'}
|
||||
];
|
||||
for (const uploadFile of uploadFiles) {
|
||||
test(`can upload an audio with the ${uploadFile.fileExtension} extension in the content`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can upload an audio with the ${uploadFile.fileExtension} extension in the content`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -65,7 +65,7 @@ const uploadFiles = [
|
||||
{fileExtension: 'png', fileName: 'Umbraco.png'}
|
||||
];
|
||||
for (const uploadFile of uploadFiles) {
|
||||
test(`can upload a file with the ${uploadFile.fileExtension} extension in the content`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can upload a file with the ${uploadFile.fileExtension} extension in the content`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -60,7 +60,7 @@ test('can publish content with the upload vector graphics data type', async ({um
|
||||
expect(contentData.values).toEqual([]);
|
||||
});
|
||||
|
||||
test(`can upload a file with the svg extension in the content`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can upload a file with the svg extension in the content`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const vectorGraphicsName = 'VectorGraphics.svg';
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
|
||||
@@ -66,7 +66,7 @@ const uploadVideos = [
|
||||
{fileExtension: 'ogv', fileName: 'Ogv.ogv'}
|
||||
];
|
||||
for (const uploadVideo of uploadVideos) {
|
||||
test(`can upload a video with the ${uploadVideo.fileExtension} extension in the content`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can upload a video with the ${uploadVideo.fileExtension} extension in the content`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeData.id);
|
||||
|
||||
@@ -105,7 +105,7 @@ test('can delete culture and hostname', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(domainsData.domains.length).toBe(0);
|
||||
});
|
||||
|
||||
test('can add culture and hostname for multiple languages', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add culture and hostname for multiple languages', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const secondDomainName = 'testdomain2';
|
||||
const secondLanguageName = 'Vietnamese';
|
||||
|
||||
@@ -31,7 +31,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can publish invariant content with descendants without unpublished content items', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can publish invariant content with descendants without unpublished content items', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
childDocumentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(childDocumentTypeName, dataTypeName, dataTypeId);
|
||||
documentTypeId = await umbracoApi.documentType.createDocumentTypeWithAllowedChildNodeAndDataType(documentTypeName, childDocumentTypeId, dataTypeName, dataTypeId);
|
||||
@@ -144,7 +144,7 @@ test('can publish variant content with descendants without unpublished content i
|
||||
expect(childContentData.variants[0].state).toBe('Draft');
|
||||
});
|
||||
|
||||
test('can publish variant content with descendants and include unpublished content items', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can publish variant content with descendants and include unpublished content items', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
childDocumentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(childDocumentTypeName, dataTypeName, dataTypeId);
|
||||
documentTypeId = await umbracoApi.documentType.createVariantDocumentTypeWithAllowedChildNodeAndInvariantPropertyEditor(documentTypeName, childDocumentTypeId, dataTypeName, dataTypeId);
|
||||
|
||||
@@ -80,7 +80,7 @@ test('can update overlay size in a block', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(await umbracoApi.dataType.doesBlockEditorBlockContainOverlaySize(blockGridEditorName, contentElementTypeId, overlaySize)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can enable inline editing mode in a block', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can enable inline editing mode in a block', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const textStringData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const contentElementTypeId = await umbracoApi.documentType.createDefaultElementType(elementTypeName, groupName, dataTypeName, textStringData.id);
|
||||
@@ -119,7 +119,7 @@ test('can disable inline editing mode in a block', async ({umbracoApi, umbracoUi
|
||||
expect(await umbracoApi.dataType.doesBlockEditorBlockContainInlineEditing(blockGridEditorName, contentElementTypeId, false)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can enable hide content editor in a block', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can enable hide content editor in a block', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const textStringData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const contentElementTypeId = await umbracoApi.documentType.createDefaultElementType(elementTypeName, groupName, dataTypeName, textStringData.id);
|
||||
|
||||
@@ -93,7 +93,7 @@ test('can add a block to a block grid editor', {tag: '@smoke'}, async ({umbracoA
|
||||
await umbracoApi.documentType.ensureNameNotExists(elementTypeName);
|
||||
});
|
||||
|
||||
test('can add multiple blocks to a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add multiple blocks to a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const textStringData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const secondElementName = 'SecondBlockGridElement';
|
||||
@@ -138,7 +138,7 @@ test('can remove a block from a block grid editor', {tag: '@smoke'}, async ({umb
|
||||
await umbracoApi.documentType.ensureNameNotExists(elementTypeName);
|
||||
});
|
||||
|
||||
test('can add a block to a group in a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add a block to a group in a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const textStringData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const elementTypeId = await umbracoApi.documentType.createDefaultElementType(elementTypeName, groupName, dataTypeName, textStringData.id);
|
||||
@@ -242,7 +242,7 @@ test.skip('can delete a group in a block grid editor', async ({umbracoApi, umbra
|
||||
await umbracoUi.dataType.goToDataType(blockGridEditorName);
|
||||
});
|
||||
|
||||
test('can add a min and max amount to a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add a min and max amount to a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const minAmount = 1;
|
||||
const maxAmount = 2;
|
||||
@@ -282,7 +282,7 @@ test('max can not be less than min in a block grid editor', async ({umbracoApi,
|
||||
expect(dataTypeData.values[0].value.max).toBe(oldMaxAmount);
|
||||
});
|
||||
|
||||
test('can enable live editing mode in a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can enable live editing mode in a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.dataType.createEmptyBlockGrid(blockGridEditorName);
|
||||
|
||||
@@ -310,7 +310,7 @@ test('can disable live editing mode in a block grid editor', async ({umbracoApi,
|
||||
expect(await umbracoApi.dataType.isLiveEditingModeEnabledForBlockEditor(blockGridEditorName, false)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can add editor width in a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add editor width in a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const propertyEditorWidth = '100%';
|
||||
await umbracoApi.dataType.createEmptyBlockGrid(blockGridEditorName);
|
||||
@@ -341,7 +341,7 @@ test('can remove editor width in a block grid editor', async ({umbracoApi, umbra
|
||||
expect(await umbracoApi.dataType.doesMaxPropertyContainWidthForBlockEditor(blockGridEditorName, '')).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can add a create button label in a block grid editor', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add a create button label in a block grid editor', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const createButtonLabel = 'Create Block';
|
||||
await umbracoApi.dataType.createEmptyBlockGrid(blockGridEditorName);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Checkbox list';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Content Picker';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'TestDataType';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'TestDataType';
|
||||
|
||||
@@ -17,7 +17,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.dataType.ensureNameNotExists(dataTypeFolderName);
|
||||
});
|
||||
|
||||
test('can create a data type folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a data type folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.dataType.clickActionsMenuAtRoot();
|
||||
await umbracoUi.dataType.createDataTypeFolder(dataTypeFolderName);
|
||||
@@ -126,7 +126,7 @@ test('can create a folder in a folder in a folder', async ({umbracoApi, umbracoU
|
||||
expect(childrenFolderData[0].isFolder).toBeTruthy();
|
||||
});
|
||||
|
||||
test('cannot delete a non-empty data type folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot delete a non-empty data type folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
let dataTypeFolderId = await umbracoApi.dataType.createFolder(dataTypeFolderName);
|
||||
expect(await umbracoApi.dataType.doesNameExist(dataTypeFolderName)).toBeTruthy();
|
||||
@@ -151,7 +151,7 @@ test('cannot delete a non-empty data type folder', async ({umbracoApi, umbracoUi
|
||||
await umbracoApi.dataType.ensureNameNotExists(dataTypeName);
|
||||
});
|
||||
|
||||
test('can move a data type to a data type folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can move a data type to a data type folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.dataType.ensureNameNotExists(dataTypeName);
|
||||
const dataTypeId = await umbracoApi.dataType.create(dataTypeName, editorAlias, editorUiAlias,[]);
|
||||
@@ -174,7 +174,7 @@ test('can move a data type to a data type folder', async ({umbracoApi, umbracoUi
|
||||
await umbracoApi.dataType.ensureNameNotExists(dataTypeName);
|
||||
});
|
||||
|
||||
test('can duplicate a data type to a data type folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can duplicate a data type to a data type folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.dataType.ensureNameNotExists(dataTypeName);
|
||||
await umbracoApi.dataType.create(dataTypeName, editorAlias, editorUiAlias, []);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const customDataTypeName = 'Custom Dropdown';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ConstantHelper, NotificationConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { ConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
const labelTypes = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ConstantHelper, NotificationConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { ConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
const listViewTypes = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Multi URL Picker';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Numeric';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Radiobox';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Tags';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Textarea';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'Textstring';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {NotificationConstantHelper, test} from "@umbraco/playwright-testhelpers";
|
||||
import {test} from "@umbraco/playwright-testhelpers";
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const tipTapName = 'TestTiptap';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const dataTypeName = 'True/false';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ConstantHelper, NotificationConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { ConstantHelper, test } from "@umbraco/playwright-testhelpers";
|
||||
import { expect } from "@playwright/test";
|
||||
|
||||
const uploadTypes = [
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {expect} from '@playwright/test';
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const dataTypeName = 'List View - Media';
|
||||
let dataTypeDefaultData = null;
|
||||
@@ -96,7 +96,7 @@ test('can disable one view in the media section', async ({umbracoApi, umbracoUi}
|
||||
await umbracoUi.media.isMediaGridViewVisible(false);
|
||||
});
|
||||
|
||||
test('can allow bulk trash in the media section', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can allow bulk trash in the media section', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.media.goToSection(ConstantHelper.sections.media);
|
||||
await umbracoUi.media.selectMediaWithName(firstMediaFileName);
|
||||
|
||||
@@ -14,7 +14,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.media.ensureNameNotExists(mediaFileName);
|
||||
});
|
||||
|
||||
test('can not create a empty media file', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not create a empty media file', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.media.goToSection(ConstantHelper.sections.media);
|
||||
|
||||
@@ -58,7 +58,7 @@ const mediaFileTypes = [
|
||||
];
|
||||
|
||||
for (const mediaFileType of mediaFileTypes) {
|
||||
test(`can create a media file with the ${mediaFileType.fileName} type`, async ({umbracoApi, umbracoUi}) => {
|
||||
test(`can create a media file with the ${mediaFileType.fileName} type`, {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.media.ensureNameNotExists(mediaFileType.fileName);
|
||||
await umbracoUi.media.goToSection(ConstantHelper.sections.media);
|
||||
@@ -230,7 +230,7 @@ test('can delete a media item from the recycle bin', async ({umbracoApi, umbraco
|
||||
expect(await umbracoApi.media.doesMediaItemExistInRecycleBin(mediaFileName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('can empty the recycle bin', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can empty the recycle bin', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.media.emptyRecycleBin();
|
||||
await umbracoApi.media.createDefaultMediaFile(mediaFileName);
|
||||
@@ -249,7 +249,7 @@ test('can empty the recycle bin', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(await umbracoApi.media.doesMediaItemExistInRecycleBin(mediaFileName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('can trash a media node with a relation', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can trash a media node with a relation', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentPickerName = ['TestPicker', 'DocumentTypeForPicker'];
|
||||
await umbracoApi.media.emptyRecycleBin();
|
||||
|
||||
@@ -26,7 +26,7 @@ test('can create a member group', {tag: '@smoke'}, async ({umbracoApi, umbracoUi
|
||||
expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('cannot create member group with empty name', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create member group with empty name', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.memberGroup.clickMemberGroupCreateButton();
|
||||
await umbracoUi.memberGroup.clickSaveButton();
|
||||
@@ -36,7 +36,7 @@ test('cannot create member group with empty name', async ({umbracoApi, umbracoUi
|
||||
expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('cannot create member group with duplicate name', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create member group with duplicate name', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.memberGroup.create(memberGroupName);
|
||||
expect(await umbracoApi.memberGroup.doesNameExist(memberGroupName)).toBeTruthy();
|
||||
|
||||
@@ -223,7 +223,7 @@ test('can delete member', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => {
|
||||
expect(await umbracoApi.member.doesNameExist(memberName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('cannot create member with invalid email', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create member with invalid email', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const invalidEmail = 'invalidemail';
|
||||
await umbracoUi.member.goToMembers();
|
||||
|
||||
@@ -5,7 +5,7 @@ test.beforeEach(async ({umbracoUi}) => {
|
||||
await umbracoUi.welcomeDashboard.goToSection(ConstantHelper.sections.settings);
|
||||
});
|
||||
|
||||
test('can click on buttons', async ({umbracoUi}) => {
|
||||
test('can click on buttons', {tag: '@release'}, async ({umbracoUi}) => {
|
||||
// Arrange
|
||||
const getTheHelpYouNeedDocumentationUrl = 'https://docs.umbraco.com/umbraco-cms';
|
||||
const goToTheForumUrl = 'https://forum.umbraco.com/';
|
||||
|
||||
@@ -76,7 +76,7 @@ test('can delete a document blueprint', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.documentBlueprint.isDocumentBlueprintRootTreeItemVisible(documentBlueprintName, false, false);
|
||||
});
|
||||
|
||||
test('can create a document blueprint from the content menu', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a document blueprint from the content menu', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
await umbracoApi.document.createDefaultDocument(documentBlueprintName, documentTypeId);
|
||||
|
||||
@@ -34,7 +34,7 @@ test('can create a document type using create options', async ({umbracoApi, umbr
|
||||
await umbracoUi.documentType.doesCollectionTreeItemTableRowHaveIcon(documentTypeName, 'icon-document');
|
||||
});
|
||||
|
||||
test('can create a document type with a template using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a document type with a template using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.template.ensureNameNotExists(documentTypeName);
|
||||
await umbracoUi.documentType.clickDocumentTypesMenu();
|
||||
@@ -61,7 +61,7 @@ test('can create a document type with a template using create options', async ({
|
||||
await umbracoApi.template.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can create a element type using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a element type using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.documentType.clickDocumentTypesMenu();
|
||||
|
||||
@@ -82,7 +82,7 @@ test('can create a element type using create options', async ({umbracoApi, umbra
|
||||
await umbracoUi.documentType.doesCollectionTreeItemTableRowHaveIcon(documentTypeName, 'icon-plugin');
|
||||
});
|
||||
|
||||
test('can create a document type folder using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a document type folder using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.documentType.clickDocumentTypesMenu();
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ test('can create a document type with a property in a tab', {tag: '@smoke'}, asy
|
||||
expect(await umbracoApi.documentType.doesTabContainCorrectPropertyEditorInGroup(documentTypeName, dataTypeName, documentTypeData.properties[0].dataType.id, tabName, groupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can create a document type with multiple groups', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a document type with multiple groups', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const secondDataTypeName = 'Image Media Picker';
|
||||
@@ -176,7 +176,7 @@ test('can create a document type with multiple groups', async ({umbracoApi, umbr
|
||||
expect(await umbracoApi.documentType.doesGroupContainCorrectPropertyEditor(documentTypeName, secondDataTypeName, secondDataType.id, secondGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can create a document type with multiple tabs', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a document type with multiple tabs', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const secondDataTypeName = 'Image Media Picker';
|
||||
@@ -373,7 +373,7 @@ test('can set is mandatory for a property in a document type', {tag: '@smoke'},
|
||||
expect(documentTypeData.properties[0].validation.mandatory).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can enable validation for a property in a document type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can enable validation for a property in a document type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const regex = '^[a-zA-Z0-9]*$';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from '@playwright/test';
|
||||
|
||||
const documentFolderName = 'TestFolder';
|
||||
|
||||
@@ -72,7 +72,7 @@ test('can remove an allowed child node from a document type', async ({umbracoApi
|
||||
await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeName);
|
||||
});
|
||||
|
||||
test('can configure a collection for a document type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can configure a collection for a document type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const collectionDataTypeName = 'TestCollection';
|
||||
await umbracoApi.dataType.ensureNameNotExists(collectionDataTypeName);
|
||||
|
||||
@@ -122,7 +122,7 @@ test('can add fallback language', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(languageData.fallbackIsoCode).toBe(defaultLanguageIsoCode);
|
||||
});
|
||||
|
||||
test('cannot add a language with duplicate ISO code', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot add a language with duplicate ISO code', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.language.create(languageName, false, false, isoCode);
|
||||
expect(await umbracoApi.language.doesExist(isoCode)).toBeTruthy();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {expect} from "@playwright/test";
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const mediaTypeName = 'TestMediaType';
|
||||
const mediaTypeFolderName = 'TestMediaTypeFolder';
|
||||
@@ -16,7 +16,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.mediaType.ensureNameNotExists(mediaTypeFolderName);
|
||||
});
|
||||
|
||||
test('can create a media type using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a media type using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.mediaType.clickMediaTypesMenu();
|
||||
|
||||
@@ -35,7 +35,7 @@ test('can create a media type using create options', async ({umbracoApi, umbraco
|
||||
await umbracoUi.mediaType.isMediaTypeTreeItemVisible(mediaTypeName);
|
||||
});
|
||||
|
||||
test('can create a media type folder using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a media type folder using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.mediaType.clickMediaTypesMenu();
|
||||
|
||||
@@ -53,7 +53,7 @@ test('can create a media type folder using create options', async ({umbracoApi,
|
||||
await umbracoUi.mediaType.doesCollectionTreeItemTableRowHaveIcon(mediaTypeFolderName, 'icon-folder');
|
||||
});
|
||||
|
||||
test('can create a media type in a folder using create options', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a media type in a folder using create options', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.mediaType.createFolder(mediaTypeFolderName);
|
||||
await umbracoUi.mediaType.goToMediaType(mediaTypeFolderName);
|
||||
|
||||
@@ -127,7 +127,7 @@ test('can set a property as mandatory in a media type', {tag: '@smoke'}, async (
|
||||
expect(mediaTypeData.properties[0].validation.mandatory).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can set up validation for a property in a media type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can set up validation for a property in a media type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const regex = '^[a-zA-Z0-9]*$';
|
||||
@@ -226,7 +226,7 @@ test('can create a media type with multiple groups', {tag: '@smoke'}, async ({um
|
||||
expect(await umbracoApi.mediaType.doesGroupContainCorrectPropertyEditor(mediaTypeName, secondDataTypeName, secondDataType.id, secondGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can create a media type with multiple tabs', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a media type with multiple tabs', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
const secondDataTypeName = 'Image Media Picker';
|
||||
@@ -251,7 +251,7 @@ test('can create a media type with multiple tabs', async ({umbracoApi, umbracoUi
|
||||
expect(await umbracoApi.mediaType.doesTabContainCorrectPropertyEditorInGroup(mediaTypeName, secondDataTypeName, secondDataType.id, secondTabName, secondGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can delete a tab from a media type', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can delete a tab from a media type', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const dataTypeData = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
await umbracoApi.mediaType.createMediaTypeWithPropertyEditorInTab(mediaTypeName, dataTypeName, dataTypeData.id, tabName, groupName);
|
||||
|
||||
@@ -280,7 +280,7 @@ test('can show returned items in query builder ', async ({umbracoApi, umbracoUi}
|
||||
await umbracoApi.document.ensureNameNotExists(childContentName);
|
||||
});
|
||||
|
||||
test('cannot create a partial view with an empty name', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create a partial view with an empty name', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.partialView.clickActionsMenuAtRoot();
|
||||
await umbracoUi.partialView.clickCreateOptionsActionMenuOption();
|
||||
|
||||
@@ -145,7 +145,7 @@ test('can create a folder in a folder in a folder', {tag: '@smoke'}, async ({umb
|
||||
await umbracoUi.partialView.isPartialViewRootTreeItemVisible(childOfChildFolderName, true, false);
|
||||
});
|
||||
|
||||
test('cannot delete non-empty folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot delete non-empty folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const childFolderName = 'ChildFolderName';
|
||||
await umbracoApi.partialView.createFolder(folderName);
|
||||
|
||||
@@ -101,7 +101,7 @@ test('can rename a script', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(await umbracoApi.script.doesNameExist(wrongScriptName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('cannot create a script with an empty name', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create a script with an empty name', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.script.goToSection(ConstantHelper.sections.settings);
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ test('can create a script in a folder in a folder', async ({umbracoApi, umbracoU
|
||||
await umbracoUi.script.isScriptRootTreeItemVisible(scriptName, true, false);
|
||||
});
|
||||
|
||||
test('cannot delete non-empty folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot delete non-empty folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const childFolderName = 'ChildFolderName';
|
||||
await umbracoApi.script.createFolder(scriptFolderName);
|
||||
|
||||
@@ -102,7 +102,7 @@ test('can rename a stylesheet', {tag: '@smoke'}, async ({umbracoApi, umbracoUi})
|
||||
expect(await umbracoApi.stylesheet.doesNameExist(wrongStylesheetName)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('cannot create a stylesheet with an empty name', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot create a stylesheet with an empty name', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoUi.stylesheet.goToSection(ConstantHelper.sections.settings);
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ test('can create a stylesheet in a folder in a folder', async ({umbracoApi, umbr
|
||||
await umbracoUi.stylesheet.isStylesheetRootTreeItemVisible(stylesheetName, true, false);
|
||||
});
|
||||
|
||||
test('cannot delete non-empty folder', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot delete non-empty folder', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const childFolderName = 'ChildFolderName';
|
||||
await umbracoApi.stylesheet.createFolder(stylesheetFolderName);
|
||||
|
||||
@@ -85,7 +85,7 @@ test('can delete a template', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.template.isTemplateRootTreeItemVisible(templateName, false, false);
|
||||
});
|
||||
|
||||
test('can set a template as master template', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can set a template as master template', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const childTemplateName = 'ChildTemplate';
|
||||
await umbracoApi.template.ensureNameNotExists(childTemplateName);
|
||||
|
||||
@@ -29,7 +29,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can create content with a rich text editor that has a stylesheet', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create content with a rich text editor that has a stylesheet', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
|
||||
@@ -1,26 +1,33 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from "@umbraco/playwright-testhelpers";
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
// Document Type
|
||||
const rootDocumentTypeName = 'RootDocumentType';
|
||||
const childDocumentTypeOneName = 'ChildDocumentTypeOne';
|
||||
const childDocumentTypeTwoName = 'ChildDocumentTypeTwo';
|
||||
let childDocumentTypeId = null;
|
||||
let rootDocumentTypeId = null;
|
||||
|
||||
// Document
|
||||
const rootDocumentName = 'RootDocument';
|
||||
const childDocumentOneName = 'ChildDocumentOne';
|
||||
const childDocumentTwoName = 'SecondChildDocument';
|
||||
let rootDocumentId = null;
|
||||
|
||||
// Data Type
|
||||
const dataTypeName = 'Textstring';
|
||||
let dataTypeId = null;
|
||||
const documentText = 'This is test document text';
|
||||
|
||||
// Document Blueprint
|
||||
const testDocumentName = 'TestDocument';
|
||||
const documentBlueprintName = 'TestBlueprintName';
|
||||
|
||||
// User
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
// User Group
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
@@ -49,7 +56,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentBlueprint.ensureNameNotExists(documentBlueprintName);
|
||||
});
|
||||
|
||||
test('can browse content node with permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can read content node with permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -64,7 +71,7 @@ test('can browse content node with permission enabled', async ({umbracoApi, umbr
|
||||
await umbracoUi.content.doesDocumentHaveName(rootDocumentName);
|
||||
});
|
||||
|
||||
test('can not browse content node with permission disabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not read content node with permission disabled', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermission(userGroupName, false);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -79,7 +86,7 @@ test('can not browse content node with permission disabled', async ({umbracoApi,
|
||||
await umbracoUi.content.doesDocumentWorkspaceHaveText('Not found');
|
||||
});
|
||||
|
||||
test('can create document blueprint with permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create document blueprint with permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithCreateDocumentBlueprintPermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -111,7 +118,7 @@ test('can not create document blueprint with permission disabled', async ({umbra
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can delete content with delete permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can delete content with delete permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDeleteDocumentPermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -143,7 +150,7 @@ test('can not delete content with delete permission disabled', async ({umbracoAp
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can empty recycle bin with delete permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can empty recycle bin with delete permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.moveToRecycleBin(rootDocumentId);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDeleteDocumentPermission(userGroupName);
|
||||
@@ -177,7 +184,7 @@ test('can not empty recycle bin with delete permission disabled', async ({umbrac
|
||||
await umbracoUi.content.isActionsMenuForRecycleBinVisible(false);
|
||||
});
|
||||
|
||||
test('can create content with create permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create content with create permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithCreateDocumentPermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -238,7 +245,7 @@ test('can not create notifications with notification permission disabled', async
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can publish content with publish permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can publish content with publish permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPublishPermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -302,7 +309,7 @@ test('can not set permissions with set permissions permission disabled', async (
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can unpublish content with unpublish permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can unpublish content with unpublish permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.publish(rootDocumentId);
|
||||
expect(await umbracoApi.document.isDocumentPublished(rootDocumentId)).toBeTruthy();
|
||||
@@ -338,7 +345,7 @@ test('can not unpublish content with unpublish permission disabled', async ({umb
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can update content with update permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can update content with update permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithUpdatePermission(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -375,7 +382,7 @@ test('can not update content with update permission disabled', async ({umbracoAp
|
||||
});
|
||||
|
||||
// Needs create permission to be enabled to duplicate content
|
||||
test.fixme('can duplicate content with duplicate permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test.fixme('can duplicate content with duplicate permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const duplicatedContentName = rootDocumentName + ' (1)';
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDuplicatePermission(userGroupName);
|
||||
@@ -417,7 +424,7 @@ test('can not duplicate content with duplicate permission disabled', async ({umb
|
||||
});
|
||||
|
||||
// Needs create permission to be enabled to move content
|
||||
test.fixme('can move content with move to permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test.fixme('can move content with move to permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const moveToDocumentName = 'SecondRootDocument';
|
||||
const moveToDocumentId = await umbracoApi.document.createDocumentWithTextContent(moveToDocumentName, rootDocumentTypeId, documentText, dataTypeName);
|
||||
@@ -461,7 +468,7 @@ test('can not move content with move to permission disabled', async ({umbracoApi
|
||||
});
|
||||
|
||||
// Needs a better way to assert
|
||||
test.fixme('can sort children with sort children permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test.fixme('can sort children with sort children permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.createDefaultDocumentWithParent(childDocumentTwoName, childDocumentTypeId, rootDocumentId);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithSortChildrenPermission(userGroupName);
|
||||
@@ -502,7 +509,7 @@ test('can not sort children with sort children permission disabled', async ({umb
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can set culture and hostnames with culture and hostnames permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can set culture and hostnames with culture and hostnames permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const domainName = '/domain';
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithCultureAndHostnamesPermission(userGroupName);
|
||||
@@ -574,7 +581,7 @@ test('can not set public access with public access permission disabled', async (
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can rollback content with rollback permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can rollback content with rollback permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithRollbackPermission(userGroupName);
|
||||
await umbracoApi.document.publish(rootDocumentId);
|
||||
@@ -616,7 +623,7 @@ test('can not rollback content with rollback permission disabled', async ({umbra
|
||||
await umbracoUi.content.isActionsMenuForNameVisible(rootDocumentName, false);
|
||||
});
|
||||
|
||||
test('can not see delete button in content for userGroup with delete permission disabled and create permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not see delete button in content for userGroup with delete permission disabled and create permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDeletePermissionAndCreatePermission(userGroupName, false, true);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
|
||||
@@ -35,7 +35,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can only see property values for specific document with read UI enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can only see property values for specific document with read UI enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(userGroupName, firstDocumentId, documentTypeId, firstPropertyName[0], true, false, secondPropertyName[0], true, false);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -50,7 +50,7 @@ test('can only see property values for specific document with read UI enabled',
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameReadOnly(firstPropertyName[1]);
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameReadOnly(secondPropertyName[1]);
|
||||
await umbracoUi.content.goToContentWithName(secondDocumentName);
|
||||
await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied');
|
||||
await umbracoUi.content.doesDocumentWorkspaceHaveText('Not found');
|
||||
});
|
||||
|
||||
test('cannot see specific property value without UI read permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
@@ -69,7 +69,7 @@ test('cannot see specific property value without UI read permission enabled', as
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameVisible(secondPropertyName[1], false);
|
||||
});
|
||||
|
||||
test('can see specific property values with UI read permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see specific property values with UI read permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(userGroupName, firstDocumentId, documentTypeId, firstPropertyName[0], true, false, secondPropertyName[0], true, false);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -85,7 +85,7 @@ test('can see specific property values with UI read permission enabled', async (
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameReadOnly(secondPropertyName[1]);
|
||||
});
|
||||
|
||||
test('can see property with UI read enabled but not another property with UI read disabled in the same document', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see property with UI read enabled but not another property with UI read disabled in the same document', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(userGroupName, firstDocumentId, documentTypeId, firstPropertyName[0], true, false, secondPropertyName[0], false, false);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -103,7 +103,7 @@ test('can see property with UI read enabled but not another property with UI rea
|
||||
|
||||
// Remove .skip when the front-end is ready.
|
||||
// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19395
|
||||
test.skip('can edit specific property values with UI read and write permission enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test.skip('can edit specific property values with UI read and write permission enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const inputText = 'This is test text';
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(userGroupName, firstDocumentId, documentTypeId, firstPropertyName[0], true, true, secondPropertyName[0], true, true);
|
||||
@@ -126,7 +126,7 @@ test.skip('can edit specific property values with UI read and write permission e
|
||||
expect(firstDocumentData.values[1].value).toEqual(true);
|
||||
});
|
||||
|
||||
test('cannot see specific property values with UI write permission enabled and UI read permission disabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot see specific property values with UI write permission enabled and UI read permission disabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentAndTwoPropertyValues(userGroupName, firstDocumentId, documentTypeId, firstPropertyName[0], false, true, secondPropertyName[0], false, true);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {expect} from '@playwright/test';
|
||||
import {AliasHelper, ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {AliasHelper, ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
@@ -43,7 +43,7 @@ test('cannot see property values without UI read permission', async ({umbracoApi
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameVisible('text-box', false);
|
||||
});
|
||||
|
||||
test('can see property values with UI read but not UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see property values with UI read but not UI write permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermissionAndReadPropertyValuePermission(userGroupName, true, true);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -58,7 +58,7 @@ test('can see property values with UI read but not UI write permission', async (
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameReadOnly('text-box');
|
||||
});
|
||||
|
||||
test('cannot open content without document read permission even with UI read permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot open content without document read permission even with UI read permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermissionAndReadPropertyValuePermission(userGroupName, false, true);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
@@ -70,7 +70,7 @@ test('cannot open content without document read permission even with UI read per
|
||||
await umbracoUi.content.goToContentWithName(documentName);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.doesDocumentWorkspaceHaveText('Access denied');
|
||||
await umbracoUi.content.doesDocumentWorkspaceHaveText('Not found');
|
||||
});
|
||||
|
||||
test('cannot edit property values without UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
|
||||
@@ -31,7 +31,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.dataType.ensureNameNotExists(customDataTypeName);
|
||||
});
|
||||
|
||||
test('can see property values in block list with UI read but not UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see property values in block list with UI read but not UI write permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.createDefaultDocumentWithABlockListEditor(documentName, elementTypeId, documentTypeName, customDataTypeName);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermissionAndReadPropertyValuePermission(userGroupName, true, true);
|
||||
@@ -51,7 +51,7 @@ test('can see property values in block list with UI read but not UI write permis
|
||||
|
||||
// Remove .skip when the front-end is ready.
|
||||
// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19395
|
||||
test.skip('can edit property values in block list with UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test.skip('can edit property values in block list with UI write permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const updatedText = 'Updated test text';
|
||||
await umbracoApi.document.createDefaultDocumentWithABlockListEditor(documentName, elementTypeId, documentTypeName, customDataTypeName);
|
||||
@@ -90,7 +90,7 @@ test('cannot see property values in block list with only UI write but no UI read
|
||||
await umbracoUi.content.isPropertyEditorUiWithNameVisible('block-list', false);
|
||||
});
|
||||
|
||||
test('can see property values in block grid with UI read but not UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see property values in block grid with UI read but not UI write permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.createDefaultDocumentWithABlockGridEditor(documentName, elementTypeId, documentTypeName, customDataTypeName);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithReadPermissionAndReadPropertyValuePermission(userGroupName, true, true);
|
||||
@@ -110,7 +110,7 @@ test('can see property values in block grid with UI read but not UI write permis
|
||||
|
||||
// Remove .skip when the front-end is ready.
|
||||
// Issue link: https://github.com/umbraco/Umbraco-CMS/issues/19395
|
||||
test.skip('can edit property values in block grid with UI write permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test.skip('can edit property values in block grid with UI write permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const updatedText = 'Updated test text';
|
||||
await umbracoApi.document.createDefaultDocumentWithABlockGridEditor(documentName, elementTypeId, documentTypeName, customDataTypeName);
|
||||
@@ -133,7 +133,7 @@ test.skip('can edit property values in block grid with UI write permission', asy
|
||||
expect(documentData.values[0].value.contentData[0].values[0].value).toEqual(updatedText);
|
||||
});
|
||||
|
||||
test('cannot see property values in block grid with only UI write but no UI read permission', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot see property values in block grid with only UI write but no UI read permission', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.document.createDefaultDocumentWithABlockGridEditor(documentName, elementTypeId, documentTypeName, customDataTypeName);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithUpdatePermissionAndWritePropertyValuePermission(userGroupName, true, true, false);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {AliasHelper, ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {AliasHelper, ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
@@ -102,7 +102,7 @@ test('can not rename content with language not set in userGroup', async ({umbrac
|
||||
await umbracoUi.content.isDocumentNameInputEditable(false);
|
||||
});
|
||||
|
||||
test('can update content property with language set in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can update content property with language set in userGroup', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
|
||||
@@ -33,7 +33,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.media.ensureNameNotExists(childFolderTwoName);
|
||||
});
|
||||
|
||||
test('can see root media start node and children', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can see root media start node and children', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithMediaStartNode(userGroupName, rootFolderId);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
|
||||
@@ -31,7 +31,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can access members section with section enabled', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can access members section with section enabled', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithMemberSection(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], true, [], false, 'en-us');
|
||||
|
||||
@@ -31,7 +31,7 @@ test('can go to section defined in userGroup', async ({umbracoApi, umbracoUi}) =
|
||||
await umbracoUi.content.goToSection(ConstantHelper.sections.content, false);
|
||||
});
|
||||
|
||||
test('can not see section that is not defined in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can not see section that is not defined in userGroup', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
|
||||
@@ -111,7 +111,7 @@ test('can remove a user group from a user', {tag: '@smoke'}, async ({umbracoApi,
|
||||
expect(userData.userGroupIds).toEqual([]);
|
||||
});
|
||||
|
||||
test('can update culture for a user', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can update culture for a user', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const danishIsoCode = 'da';
|
||||
const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const allPermissions = {
|
||||
@@ -51,7 +51,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can create an empty user group', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create an empty user group', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickUserGroupsButton();
|
||||
await umbracoUi.userGroup.clickCreateLink();
|
||||
@@ -87,7 +87,7 @@ test('can rename a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.userGroup.isUserGroupWithNameVisible(oldUserGroupName, false);
|
||||
});
|
||||
|
||||
test('can update a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can update a user group', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsButton();
|
||||
@@ -105,7 +105,7 @@ test('can update a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(userGroupData.fallbackPermissions).toContain(allPermissions.verbPermission[0]);
|
||||
});
|
||||
|
||||
test('can delete a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can delete a user group', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsButton();
|
||||
@@ -395,7 +395,7 @@ test('can enable all permissions for a user group', async ({umbracoApi, umbracoU
|
||||
expect(userGroupData.fallbackPermissions).toEqual(allPermissions.verbPermission);
|
||||
});
|
||||
|
||||
test('can add granular permission to a specific document for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add granular permission to a specific document for a user group', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
@@ -421,7 +421,7 @@ test('can add granular permission to a specific document for a user group', asyn
|
||||
await umbracoApi.document.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can add all granular permissions to a specific document for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can add all granular permissions to a specific document for a user group', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
|
||||
@@ -7,7 +7,7 @@ test.beforeEach(async ({umbracoUi}) => {
|
||||
await umbracoUi.userGroup.clickUserGroupsButton();
|
||||
});
|
||||
|
||||
test('the default configuration of Administrators is correct', async ({umbracoApi, umbracoUi}) => {
|
||||
test('the default configuration of Administrators is correct', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroupName = 'Administrators';
|
||||
const sections = [
|
||||
@@ -67,7 +67,7 @@ test('the default configuration of Administrators is correct', async ({umbracoAp
|
||||
expect(userGroupData.permissions).toEqual(granularPermissions);
|
||||
});
|
||||
|
||||
test('the default configuration of Editors is correct', async ({umbracoApi, umbracoUi}) => {
|
||||
test('the default configuration of Editors is correct', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroupName = 'Editors';
|
||||
const sections = [
|
||||
@@ -120,7 +120,7 @@ test('the default configuration of Editors is correct', async ({umbracoApi, umbr
|
||||
expect(userGroupData.permissions).toEqual(granularPermissions);
|
||||
});
|
||||
|
||||
test('the default configuration of Sensitive data is correct', async ({umbracoApi, umbracoUi}) => {
|
||||
test('the default configuration of Sensitive data is correct', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroupName = 'Sensitive data';
|
||||
const sections = [];
|
||||
@@ -154,7 +154,7 @@ test('the default configuration of Sensitive data is correct', async ({umbracoAp
|
||||
expect(userGroupData.permissions).toEqual(granularPermissions);
|
||||
});
|
||||
|
||||
test('the default configuration of Translators data is correct', async ({umbracoApi, umbracoUi}) => {
|
||||
test('the default configuration of Translators data is correct', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroupName = 'Translators';
|
||||
const sections = ["Umb.Section.Translation"];
|
||||
@@ -191,7 +191,7 @@ test('the default configuration of Translators data is correct', async ({umbraco
|
||||
expect(userGroupData.permissions).toEqual(granularPermissions);
|
||||
});
|
||||
|
||||
test('the default configuration of Writers data is correct', async ({umbracoApi, umbracoUi}) => {
|
||||
test('the default configuration of Writers data is correct', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroupName = 'Writers';
|
||||
const sections = ["Umb.Section.Content"];
|
||||
|
||||
@@ -14,7 +14,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.webhook.ensureNameNotExists(webhookName);
|
||||
});
|
||||
|
||||
test('can create a webhook', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can create a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const event = 'Content Deleted';
|
||||
const webhookSiteUrl = umbracoApi.webhook.webhookSiteUrl + webhookSiteToken;
|
||||
@@ -122,7 +122,7 @@ test('can disable a webhook', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoApi.webhook.isWebhookEnabled(webhookName, false);
|
||||
});
|
||||
|
||||
test('cannot remove all events from a webhook', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot remove all events from a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const event = 'Content Deleted';
|
||||
await umbracoApi.webhook.createDefaultWebhook(webhookName, webhookSiteToken, event);
|
||||
@@ -173,7 +173,7 @@ test('can remove a header from a webhook', async ({umbracoApi, umbracoUi}) => {
|
||||
expect(await umbracoApi.webhook.doesWebhookHaveHeader(webhookName, headerName, headerValue)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('cannot add both content event and media event for a webhook', async ({umbracoApi, umbracoUi}) => {
|
||||
test('cannot add both content event and media event for a webhook', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const event = 'Content Published';
|
||||
await umbracoApi.webhook.createDefaultWebhook(webhookName, webhookSiteToken, event);
|
||||
|
||||
@@ -27,7 +27,7 @@ test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
});
|
||||
|
||||
test('can trigger when content is published', async ({umbracoApi, umbracoUi}) => {
|
||||
test('can trigger when content is published', {tag: '@release'}, async ({umbracoApi, umbracoUi}) => {
|
||||
test.slow();
|
||||
|
||||
// Arrange
|
||||
|
||||
Reference in New Issue
Block a user