diff --git a/e2e/components/login/login.ts b/e2e/components/login/login.ts index 742f08635..ceb89a61c 100644 --- a/e2e/components/login/login.ts +++ b/e2e/components/login/login.ts @@ -19,7 +19,7 @@ import { by, ElementFinder, promise } from 'protractor'; import { Component } from '../component'; export class LoginComponent extends Component { - static selector = 'alfresco-login'; + static selector = 'adf-login'; private locators = { usernameInput: by.css('input#username'), diff --git a/e2e/pages/page.ts b/e2e/pages/page.ts index 0ee4009cb..7ec381401 100644 --- a/e2e/pages/page.ts +++ b/e2e/pages/page.ts @@ -18,7 +18,7 @@ import { browser, element, by, ElementFinder, promise } from 'protractor'; export abstract class Page { - private static USE_HASH_STRATEGY = true; + private static USE_HASH_STRATEGY = false; private locators = { app: by.css('app-root'), diff --git a/e2e/suites/actions/create-folder.test.ts b/e2e/suites/actions/create-folder.test.ts index 27d5f37de..3bb9176bb 100644 --- a/e2e/suites/actions/create-folder.test.ts +++ b/e2e/suites/actions/create-folder.test.ts @@ -17,7 +17,7 @@ import { protractor, browser, by, ElementFinder } from 'protractor'; -import { APP_ROUTES, BROWSER_WAIT_TIMEOUT } from '../../configs'; +import { APP_ROUTES, BROWSER_WAIT_TIMEOUT, SITE_VISIBILITY, SITE_ROLES } from '../../configs'; import { LoginPage, LogoutPage, BrowsingPage } from '../../pages/pages'; import { CreateOrEditFolderDialog } from '../../components/dialog/create-edit-folder-dialog'; import { LocalStorageUtility } from '../../utilities/local-storage'; @@ -31,7 +31,9 @@ describe('Create folder', () => { const folderName2 = 'my-folder2'; const folderDescription = 'description of my folder'; const duplicateFolderName = 'duplicate-folder-name'; - const nameWithSpaces = ' folder name '; + const nameWithSpaces = ' folder-name '; + + const siteName = 'site-private'; const apis = { admin: new RepoClient(), @@ -55,6 +57,9 @@ describe('Create folder', () => { beforeAll(done => { apis.admin.people.createUser(username, password) + .then(() => apis.admin.sites.createSite(siteName, SITE_VISIBILITY.PRIVATE)) + .then(() => apis.admin.nodes.createFolders([ folderName1 ], `Sites/${siteName}/documentLibrary`)) + .then(() => apis.admin.sites.addSiteMember(siteName, username, SITE_ROLES.SITE_CONSUMER)) .then(() => apis.user.nodes.createFolders([ duplicateFolderName ])) .then(() => loginPage.load()) .then(() => loginPage.loginWith(username, password)) @@ -143,11 +148,12 @@ describe('Create folder', () => { }); it('option is disabled when not enough permissions', () => { - // refactor after implementing Breadcrumb automation component - const breadcrumbRoot: ElementFinder = protractor.element(by.css('.adf-breadcrumb-item[title="User Homes"]')); + const fileLibrariesPage = new BrowsingPage(APP_ROUTES.FILE_LIBRARIES); - browser.actions().mouseMove(breadcrumbRoot).click().perform() - .then(() => personalFilesPage.sidenav.openNewMenu()) + fileLibrariesPage.sidenav.navigateToLinkByLabel('File Libraries') + .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByContainingText(siteName)) + .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByContainingText(folderName1)) + .then(() => fileLibrariesPage.sidenav.openNewMenu()) .then(menu => { const isEnabled = menu.getItemByLabel('Create folder').getWebElement().isEnabled(); expect(isEnabled).toBe(false, 'Create folder is not disabled'); @@ -155,11 +161,12 @@ describe('Create folder', () => { }); it('disabled option tooltip', () => { - // refactor after implementing Breadcrumb automation component - const breadcrumbRoot: ElementFinder = protractor.element(by.css('.adf-breadcrumb-item[title="User Homes"]')); + const fileLibrariesPage = new BrowsingPage(APP_ROUTES.FILE_LIBRARIES); - browser.actions().mouseMove(breadcrumbRoot).click().perform() - .then(() => personalFilesPage.sidenav.openNewMenu()) + fileLibrariesPage.sidenav.navigateToLinkByLabel('File Libraries') + .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByContainingText(siteName)) + .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByContainingText(folderName1)) + .then(() => fileLibrariesPage.sidenav.openNewMenu()) .then(menu => { const action = browser.actions().mouseMove(menu.getItemByLabel('Create folder')); action.perform() diff --git a/e2e/suites/actions/edit-folder.test.ts b/e2e/suites/actions/edit-folder.test.ts index 47bf0b749..c39de96ff 100644 --- a/e2e/suites/actions/edit-folder.test.ts +++ b/e2e/suites/actions/edit-folder.test.ts @@ -44,7 +44,7 @@ describe('Edit folder', () => { const loginPage = new LoginPage(); const logoutPage = new LogoutPage(); - const personalFilesPage = new BrowsingPage(); + const personalFilesPage = new BrowsingPage(APP_ROUTES.PERSONAL_FILES); const editDialog = new CreateOrEditFolderDialog(); const dataTable = personalFilesPage.dataTable; const editButton = personalFilesPage.toolbar.actions.getButtonByTitleAttribute('Edit'); @@ -130,7 +130,7 @@ describe('Edit folder', () => { }); it('button is not displayed when not enough permissions', () => { - const fileLibrariesPage = new BrowsingPage(); + const fileLibrariesPage = new BrowsingPage(APP_ROUTES.FILE_LIBRARIES); fileLibrariesPage.sidenav.navigateToLinkByLabel('File Libraries') .then(() => fileLibrariesPage.dataTable.doubleClickOnRowByContainingText(siteName)) diff --git a/package.json b/package.json index 375742605..4a455c541 100644 --- a/package.json +++ b/package.json @@ -46,14 +46,14 @@ "@angular/cli": "1.4.7", "@angular/compiler-cli": "4.4.5", "@angular/language-service": "4.4.5", - "@types/jasmine": "~2.5.53", - "@types/jasminewd2": "~2.0.2", + "@types/jasmine": "^2.5.53", + "@types/jasminewd2": "^2.0.2", "@types/node": "~6.0.60", "codelyzer": "~3.2.0", - "jasmine-core": "~2.6.2", - "jasmine-reporters": "2.2.1", - "jasmine-spec-reporter": "~4.1.0", - "jasmine2-protractor-utils": "1.3.0", + "jasmine-core": "^2.6.2", + "jasmine-reporters": "^2.2.1", + "jasmine-spec-reporter": "^4.1.0", + "jasmine2-protractor-utils": "^1.3.0", "karma": "~1.7.0", "karma-chrome-launcher": "~2.1.1", "karma-cli": "~1.0.1", @@ -61,7 +61,7 @@ "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", "node-rest-client": "^3.1.0", - "protractor": "~5.1.2", + "protractor": "^5.1.2", "ts-node": "~3.2.0", "tslint": "~5.7.0", "typescript": "~2.3.3" diff --git a/protractor.conf.js b/protractor.conf.js index 9db00659f..9141ac324 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -8,49 +8,54 @@ const jasmineReporters = require('jasmine-reporters'); const projectRoot = path.resolve(__dirname); exports.config = { - allScriptsTimeout: 11000, - specs: [ - './e2e/**/*.test.ts' - ], - capabilities: { - 'browserName': 'chrome', - chromeOptions: { - prefs: { - 'credentials_enable_service': false + allScriptsTimeout: 11000, + specs: [ + './e2e/suites/authentication/*.test.ts', + './e2e/suites/list-views/*.test.ts', + './e2e/suites/application/page-titles.test.ts', + './e2e/suites/navigation/side-navigation.test.ts', + './e2e/suites/pagination/pagination.test.ts', + './e2e/suites/actions/*.test.ts' + ], + capabilities: { + 'browserName': 'chrome', + chromeOptions: { + prefs: { + 'credentials_enable_service': false + } } - } - }, - directConnect: true, - baseUrl: 'http://localhost:3000', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - plugins: [{ - package: 'jasmine2-protractor-utils', - disableHTMLReport: false, - disableScreenshot: false, - screenshotOnExpectFailure: true, - screenshotOnSpecFailure: false, - clearFoldersBeforeTest: true, - htmlReportDir: `${projectRoot}/e2e-output/html-report/`, - screenshotPath: `${projectRoot}/e2e-output/screenshots/` - }], - onPrepare() { - require('ts-node').register({ - project: 'e2e/tsconfig.e2e.json' - }); - jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + }, + directConnect: true, + baseUrl: 'http://localhost:3000', + framework: 'jasmine2', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + plugins: [{ + package: 'jasmine2-protractor-utils', + disableHTMLReport: false, + disableScreenshot: false, + screenshotOnExpectFailure: true, + screenshotOnSpecFailure: false, + clearFoldersBeforeTest: true, + htmlReportDir: `${projectRoot}/e2e-output/html-report/`, + screenshotPath: `${projectRoot}/e2e-output/screenshots/` + }], + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); - jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ - consolidateAll: true, - savePath: `${projectRoot}/e2e-output/junit-report`, - filePrefix: 'results.xml', - useDotNotation: false, - useFullTestName: false, - reportFailedUrl: true - })); - } + jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ + consolidateAll: true, + savePath: `${projectRoot}/e2e-output/junit-report`, + filePrefix: 'results.xml', + useDotNotation: false, + useFullTestName: false, + reportFailedUrl: true + })); + } };