]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/protractor.conf.js
import 15.2.0 Octopus source
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / protractor.conf.js
index f903824552e04c71224aac0f3bbd9e34e15cc4fa..64c0534f88532dcf7b015761452f4b2c6a00bac1 100644 (file)
@@ -2,57 +2,77 @@
 // https://github.com/angular/protractor/blob/master/lib/config.ts
 
 const { SpecReporter } = require('jasmine-spec-reporter');
+let failFast = require("protractor-fail-fast");
 
-exports.config = {
+const config = {
+  SELENIUM_PROMISE_MANAGER: false,
   allScriptsTimeout: 11000,
-  specs: [
-    './e2e/**/*.e2e-spec.ts'
-  ],
+  implicitWaitTimeout: 9000,
+  suites: {
+    block: './e2e/block/*.e2e-spec.ts',
+    cluster: './e2e/cluster/*.e2e-spec.ts',
+    filesystems: './e2e/filesystems/*.e2e-spec.ts',
+    nfs: './e2e/nfs/*.e2e-spec.ts',
+    pools: './e2e/pools/*.e2e-spec.ts',
+    rgw: './e2e/rgw/*.e2e-spec.ts',
+    ui: './e2e/ui/*.e2e-spec.ts'
+  },
   capabilities: {
-    'browserName': 'chrome',
+    browserName: 'chrome',
     chromeOptions: {
       args: ['--no-sandbox', '--headless', '--window-size=1920x1080']
     },
     acceptInsecureCerts : true
   },
   directConnect: true,
-  baseUrl: 'http://localhost:4200/',
+  baseUrl: process.env.BASE_URL || 'http://localhost:4200/',
   framework: 'jasmine',
   jasmineNodeOpts: {
     showColors: true,
-    defaultTimeoutInterval: 30000,
+    defaultTimeoutInterval: 300000,
     print: function() {}
   },
   params: {
     login: {
-      user: 'admin',
-      password: 'admin'
+      user: process.env.E2E_LOGIN_USER || 'admin',
+      password: process.env.E2E_LOGIN_PWD || 'admin'
     }
   },
-  onPrepare() {
-    browser.manage().timeouts().implicitlyWait(360000);
-
-    require('ts-node').register({
-      project: 'e2e/tsconfig.e2e.json'
-    });
-    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
-
-    browser.get('/#/login');
-
-    browser.driver.findElement(by.name('username')).clear();
-    browser.driver.findElement(by.name('username')).sendKeys(browser.params.login.user);
-    browser.driver.findElement(by.name('password')).clear();
-    browser.driver.findElement(by.name('password')).sendKeys(browser.params.login.password);
-
-    browser.driver.findElement(by.css('input[type="submit"]')).click();
-
-    // Login takes some time, so wait until it's done.
-    // For the test app's login, we know it's done when it redirects to
-    // dashboard.
-    return browser.driver.wait(function() {
-      return browser.driver.getCurrentUrl().then(function(url) {
-        return /dashboard/.test(url);
-      });
-    });
+
+  plugins: [
+    {
+      package: 'protractor-screenshoter-plugin',
+      screenshotPath: '.protractor-report',
+      screenshotOnExpect: 'failure',
+      screenshotOnSpec: 'none',
+      withLogs: true,
+      writeReportFreq: 'asap',
+      imageToAscii: 'none',
+      clearFoldersBeforeTest: true
+    },
+    failFast.init()
+  ],
+  afterLaunch: function() {
+    failFast.clean();
   }
 };
+
+config.onPrepare = async () => {
+  await browser.manage().timeouts().implicitlyWait(config.implicitWaitTimeout);
+
+  require('ts-node').register({
+    project: 'e2e/tsconfig.e2e.json'
+  });
+  jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true, displayDuration: true } }));
+
+  await browser.get('/#/login');
+
+  await browser.driver.findElement(by.name('username')).clear();
+  await browser.driver.findElement(by.name('username')).sendKeys(browser.params.login.user);
+  await browser.driver.findElement(by.name('password')).clear();
+  await browser.driver.findElement(by.name('password')).sendKeys(browser.params.login.password);
+
+  await browser.driver.findElement(by.css('input[type="submit"]')).click();
+};
+
+exports.config = config;