簡體   English   中英

角度量角器在包含 Chart.js 的頁面上測試超時

[英]Angular protractor tests timeout on pages containing Chart.js

我的問題是,通過簡單地將 Chart.js 組件添加到我的 html 中,它會破壞我以前工作的組件量角器測試。 它似乎在等待Protractor.waitForAngular() - 並且永遠不會返回。 在視覺上,我幾乎可以立即看到圖表呈現 - 所以沒問題。

我的期望是 e2e 測試像往常一樣通過 - 沒有任何改變影響測試的運行 - 除非新的“等待圖” - 這是這個問題的基礎。

量角器.conf.js:

const {SpecReporter} = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts',
  ],
  capabilities: {
    'browserName': 'chrome',
    chromeOptions: {
      args: ['--window-size=1280,800'],
    }
  },
  directConnect: true,
  baseUrl: 'http://rubytoo.local:4202/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function () {
    }
  },
  // SELENIUM_PROMISE_MANAGER: false,
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
  }
};

我的組件:

 <canvas id="{{data.id}}" width="{{data.width}}" height="{{data.height}}"></canvas>

我的 e2e 測試:

  it('should display menu bar', () => {
     expect(browser.getCurrentUrl()).toEqual(`${URL}/admin/dashboard`);
   });

結果:

      ✗ should display submenu options
        - Expected false to be truthy.
            at /home/bruce/Projects/bwh-online/ruby/rubytoo-angular/e2e/src/admin.e2e-spec.ts:25:67
            at step (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/tslib/tslib.js:141:27)
            at Object.next (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/tslib/tslib.js:122:57)
            at /home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/tslib/tslib.js:115:75
            at new Promise (<anonymous>)
            at Object.__awaiter (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/tslib/tslib.js:111:16)
            at UserContext.<anonymous> (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/e2e/src/admin.e2e-spec.ts:24:42)
            at /home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/jasminewd2/index.js:112:25
            at new ManagedPromise (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/selenium-webdriver/lib/promise.js:1077:7)
        - Failed: script timeout
          (Session info: chrome=84.0.4147.105)
          (Driver info: chromedriver=84.0.4147.30 (48b3e868b4cc0aa7e8149519690b6f6949e110a8-refs/branch-heads/4147@{#310}),platform=Linux 5.0.0-32-generic x86_64)
          (Session info: chrome=84.0.4147.105)
          (Driver info: chromedriver=84.0.4147.30 (48b3e868b4cc0aa7e8149519690b6f6949e110a8-refs/branch-heads/4147@{#310}),platform=Linux 5.0.0-32-generic x86_64)
            at Object.checkLegacyResponse (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/selenium-webdriver/lib/error.js:546:15)
            at parseHttpResponse (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/selenium-webdriver/lib/http.js:509:13)
            at doSend.then.response (/home/bruce/Projects/bwh-online/ruby/rubytoo-angular/node_modules/selenium-webdriver/lib/http.js:441:30)
            at process._tickCallback (internal/process/next_tick.js:68:7)
        From: Task: Protractor.waitForAngular() - Locator: By(link text, Administration)

在添加 Chart.js 組件以告訴測試/Angular/Protractor 圖表已完成渲染時,我需要做什么額外的事情嗎?

我需要將以下兩行添加到 e2e 測試中。 我還不太確定它為什么有效,但確實如此。 ignoreSynchronization似乎也被棄用了,所以也要注意這一點。

 it('should display menu bar', () => {
     browser.sleep(5000);                     //added
     browser.ignoreSynchronization = true;    //added 
     expect(browser.getCurrentUrl()).toEqual(`${URL}/admin/dashboard`);
   });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM