diff --git a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap
index 6e422bc13f06b..b0d0933614d12 100644
--- a/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap
+++ b/x-pack/plugins/spaces/public/management/components/confirm_delete_modal/__snapshots__/confirm_delete_modal.test.tsx.snap
@@ -55,6 +55,7 @@ exports[`ConfirmDeleteModal renders as expected 1`] = `
labelType="label"
>
{
})}
>
{
values={{
rolesLink: (
diff --git a/x-pack/plugins/spaces/public/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap b/x-pack/plugins/spaces/public/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap
index 269b2b6908183..058b9ecdd0f8f 100644
--- a/x-pack/plugins/spaces/public/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap
+++ b/x-pack/plugins/spaces/public/management/edit_space/customize_space/__snapshots__/customize_space_avatar.test.tsx.snap
@@ -14,6 +14,7 @@ exports[`renders without crashing 1`] = `
labelType="label"
>
{
>
{
)}
{
fullWidth
>
{
>
{
>
{
>
{
id="xpack.spaces.management.spaceIdentifier.urlIdentifierLabel"
defaultMessage="URL identifier "
/>
-
+
{editLinkText}
diff --git a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap
index 43ae75b74c882..3835fa085c26e 100644
--- a/x-pack/plugins/spaces/public/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap
+++ b/x-pack/plugins/spaces/public/management/edit_space/enabled_features/__snapshots__/enabled_features.test.tsx.snap
@@ -68,6 +68,7 @@ exports[`EnabledFeatures renders as expected 1`] = `
values={
Object {
"rolesLink":
{
values={{
rolesLink: (
{
return (
{
return (
diff --git a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx
index a98fae2561827..36efc68749783 100644
--- a/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx
+++ b/x-pack/plugins/spaces/public/management/spaces_grid/spaces_grid_page.tsx
@@ -140,7 +140,11 @@ export class SpacesGridPage extends Component {
public getPrimaryActionButton() {
return (
-
+
{
{
render: (record: Space) => (
{
available: (record: Space) => !isReservedSpace(record),
render: (record: Space) => (
diff --git a/x-pack/plugins/spaces/public/nav_control/components/manage_spaces_button.tsx b/x-pack/plugins/spaces/public/nav_control/components/manage_spaces_button.tsx
index 98467ebdb790b..6ac637d6b31d6 100644
--- a/x-pack/plugins/spaces/public/nav_control/components/manage_spaces_button.tsx
+++ b/x-pack/plugins/spaces/public/nav_control/components/manage_spaces_button.tsx
@@ -32,6 +32,7 @@ export class ManageSpacesButton extends Component {
isDisabled={this.props.isDisabled}
onClick={this.navigateToManageSpaces}
style={this.props.style}
+ data-test-subj="manageSpaces"
>
{
return (
{
+ before(async () => {
+ await esArchiver.load('empty_kibana');
+ await PageObjects.common.navigateToApp('home');
+ });
+
+ it('a11y test for manage spaces menu from top nav on Kibana home', async () => {
+ await PageObjects.spaceSelector.openSpacesNav();
+ await retry.waitFor(
+ 'Manage spaces option visible',
+ async () => await testSubjects.exists('manageSpaces')
+ );
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for manage spaces page', async () => {
+ await PageObjects.spaceSelector.clickManageSpaces();
+ await PageObjects.header.waitUntilLoadingHasFinished();
+ await toasts.dismissAllToasts();
+ await retry.waitFor(
+ 'Manage spaces page visible',
+ async () => await testSubjects.exists('createSpace')
+ );
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for click on create space page', async () => {
+ await PageObjects.spaceSelector.clickCreateSpace();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for for customize space card', async () => {
+ await PageObjects.spaceSelector.clickEnterSpaceName();
+ await PageObjects.spaceSelector.addSpaceName('space_a');
+ await PageObjects.spaceSelector.clickSpaceAcustomAvatar();
+ await a11y.testAppSnapshot();
+ await browser.pressKeys(browser.keys.ESCAPE);
+ });
+
+ // EUI issue - https://github.com/elastic/eui/issues/3999
+ it.skip('a11y test for color picker', async () => {
+ await PageObjects.spaceSelector.clickColorPicker();
+ await a11y.testAppSnapshot();
+ await browser.pressKeys(browser.keys.ESCAPE);
+ });
+
+ it('a11y test for customize and reset space URL identifier', async () => {
+ await PageObjects.spaceSelector.clickOnCustomizeURL();
+ await a11y.testAppSnapshot();
+ await PageObjects.spaceSelector.clickOnCustomizeURL();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for describe space text space', async () => {
+ await PageObjects.spaceSelector.clickOnDescriptionOfSpace();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for click on "show" button to open customize feature display', async () => {
+ await retry.waitFor(
+ 'show button is visible',
+ async () => await testSubjects.exists('show-hide-section-link')
+ );
+ await PageObjects.spaceSelector.clickShowFeatures();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for change all option for feature visibility popover', async () => {
+ await PageObjects.spaceSelector.clickFeaturesVisibilityButton();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for hide all feature visibility popover option', async () => {
+ await PageObjects.spaceSelector.clickHideAllFeatures();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for toggle individual feature - using enterprise feature visibility', async () => {
+ await PageObjects.spaceSelector.clickFeaturesVisibilityButton();
+ await PageObjects.spaceSelector.clickShowAllFeatures();
+ await PageObjects.spaceSelector.toggleFeatureVisibility('enterpriseSearch');
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for space listing page', async () => {
+ await PageObjects.spaceSelector.clickSaveSpaceCreation();
+ await a11y.testAppSnapshot();
+ });
+
+ it('a11y test for updating a space', async () => {
+ await PageObjects.spaceSelector.clickSpaceEditButton('space_a');
+ await a11y.testAppSnapshot();
+ await PageObjects.spaceSelector.clickCancelSpaceCreation();
+ });
+
+ // creating space b and making it the current space so space selector page gets displayed when space b gets deleted
+ it('a11y test for delete space button', async () => {
+ await PageObjects.spaceSelector.clickCreateSpace();
+ await PageObjects.spaceSelector.clickEnterSpaceName();
+ await PageObjects.spaceSelector.addSpaceName('space_b');
+ await PageObjects.spaceSelector.clickSaveSpaceCreation();
+ await PageObjects.common.navigateToApp('home');
+ await PageObjects.spaceSelector.openSpacesNav();
+ await PageObjects.spaceSelector.clickSpaceAvatar('space_b');
+ await PageObjects.header.waitUntilLoadingHasFinished();
+ await PageObjects.spaceSelector.openSpacesNav();
+ await PageObjects.spaceSelector.clickManageSpaces();
+ await PageObjects.spaceSelector.clickOnDeleteSpaceButton('space_b');
+ await a11y.testAppSnapshot();
+ // a11y test for no space name in confirm dialogue box
+ await PageObjects.spaceSelector.confirmDeletingSpace();
+ await a11y.testAppSnapshot();
+ });
+
+ // test starts with deleting space b so we can get the space selection page instead of logging out in the test
+ it('a11y test for space selection page', async () => {
+ await PageObjects.spaceSelector.setSpaceNameTobeDeleted('space_b');
+ await PageObjects.spaceSelector.confirmDeletingSpace();
+ await a11y.testAppSnapshot();
+ await PageObjects.spaceSelector.clickSpaceCard('default');
+ });
+ });
+}
diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts
index 0a95805754314..bae7b688fd28c 100644
--- a/x-pack/test/accessibility/config.ts
+++ b/x-pack/test/accessibility/config.ts
@@ -20,7 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
require.resolve('./apps/grok_debugger'),
require.resolve('./apps/search_profiler'),
require.resolve('./apps/uptime'),
- require.resolve('./apps/painless_lab'),
+ require.resolve('./apps/spaces'),
],
pageObjects,
services,
diff --git a/x-pack/test/functional/page_objects/space_selector_page.ts b/x-pack/test/functional/page_objects/space_selector_page.ts
index 90196c89170dd..b272175ff2b21 100644
--- a/x-pack/test/functional/page_objects/space_selector_page.ts
+++ b/x-pack/test/functional/page_objects/space_selector_page.ts
@@ -50,6 +50,126 @@ export function SpaceSelectorPageProvider({ getService, getPageObjects }: FtrPro
return await testSubjects.click('spacesNavSelector');
}
+ async clickManageSpaces() {
+ await testSubjects.click('manageSpaces');
+ }
+
+ async clickCreateSpace() {
+ await testSubjects.click('createSpace');
+ }
+
+ async clickEnterSpaceName() {
+ await testSubjects.click('addSpaceName');
+ }
+
+ async addSpaceName(spaceName: string) {
+ await testSubjects.setValue('addSpaceName', spaceName);
+ }
+
+ async clickSpaceAcustomAvatar() {
+ await testSubjects.click('space-avatar-space_a');
+ }
+
+ async clickSpaceInitials() {
+ await testSubjects.click('spaceLetterInitial');
+ }
+
+ async addSpaceInitials(spaceInitials: string) {
+ await testSubjects.setValue('spaceLetterInitial', spaceInitials);
+ }
+
+ async clickColorPicker() {
+ await testSubjects.click('colorPickerAnchor');
+ }
+
+ async setColorinPicker(hexValue: string) {
+ await testSubjects.setValue('colorPickerAnchor', hexValue);
+ }
+
+ async clickShowFeatures() {
+ await testSubjects.click('show-hide-section-link');
+ }
+
+ async clickChangeAllPriv() {
+ await testSubjects.click('changeAllPrivilegesButton');
+ }
+
+ async clickSaveSpaceCreation() {
+ await testSubjects.click('save-space-button');
+ }
+
+ async clickSpaceEditButton(spaceName: string) {
+ await testSubjects.click(`${spaceName}-editSpace`);
+ }
+
+ async clickGoToRolesPage() {
+ await testSubjects.click('rolesManagementPage');
+ }
+
+ async clickCancelSpaceCreation() {
+ await testSubjects.click('cancel-space-button');
+ }
+
+ async clickOnCustomizeURL() {
+ await testSubjects.click('CustomizeOrReset');
+ }
+
+ async clickOnSpaceURLDisplay() {
+ await testSubjects.click('spaceURLDisplay');
+ }
+
+ async setSpaceURL(spaceURL: string) {
+ await testSubjects.setValue('spaceURLDisplay', spaceURL);
+ }
+
+ async clickFeaturesVisibilityButton() {
+ await testSubjects.click('changeAllFeatureVisibilityPopover');
+ }
+
+ async clickHideAllFeatures() {
+ await testSubjects.click('spc-toggle-all-features-hide');
+ }
+
+ async clickShowAllFeatures() {
+ await testSubjects.click('spc-toggle-all-features-show');
+ }
+
+ async toggleFeatureVisibility(featureName: string) {
+ await testSubjects.click(`feature-${featureName}-toggle`);
+ }
+
+ async clickOnDescriptionOfSpace() {
+ await testSubjects.click('descriptionSpaceText');
+ }
+
+ async setOnDescriptionOfSpace(descriptionSpace: string) {
+ await testSubjects.setValue('descriptionSpaceText', descriptionSpace);
+ }
+
+ async clickOnDeleteSpaceButton(spaceName: string) {
+ await testSubjects.click(`${spaceName}-deleteSpace`);
+ }
+
+ async setSpaceNameTobeDeleted(spaceName: string) {
+ await testSubjects.setValue('deleteSpaceInput', spaceName);
+ }
+
+ async cancelDeletingSpace() {
+ await testSubjects.click('confirmModalCancelButton');
+ }
+
+ async confirmDeletingSpace() {
+ await testSubjects.click('confirmModalConfirmButton');
+ }
+
+ async clickOnSpaceb() {
+ await testSubjects.click('space-avatar-space_b');
+ }
+
+ async goToSpecificSpace(spaceName: string) {
+ await testSubjects.click(`${spaceName}-gotoSpace`);
+ }
+
async clickSpaceAvatar(spaceId: string) {
return await retry.try(async () => {
log.info(`SpaceSelectorPage:clickSpaceAvatar(${spaceId})`);