简体   繁体   中英

Node.JS - How to perform verfication on a dynamic file name in JS?

I've tried to used in "split()" in order to ignore the dynamic string inside the file name and to perform verification only on the fixed value "Schedule" and then to return the response for to pass the test.

describe('Frontage - Calendar test cases', function() {

    var fs = require('fs');
    var splitFileName = "Schedule"
    var filename = 'c:\\automation\\tests\\downloaded\\' + splitFileName.split();

    it('New App - Calendar - Print calendar', function(){
       $$("button.font-xs.md-button.ng-scope.md-ink-ripple.gray-btn").get(1).click();
       browser.driver.wait(function() {
          return fs.existsSync(filename);
       }, 30000);
    });
});

THE ERROR

Failures:

  1) Test cases pull - Frontage Sanity Testing  Frontage - Calendar test cases New App - Calendar - Print calendar
   Message:
     Error: Wait timed out after 30000ms
   Stacktrace:
     Error: Wait timed out after 30000ms
    at C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1630:20
    at [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
    at [object Object].promise.Callback_.goog.defineClass.notify (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
    at [object Object].promise.Promise.notify_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
    at Array.forEach (native)
    at Object.goog.array.forEach (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
    at [object Object].promise.Promise.notifyAll_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
    at goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
From: Task: <anonymous wait>
    at [object Object].promise.ControlFlow.wait (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1617:15)
    at [object Object].webdriver.WebDriver.wait (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\webdriver.js:714:21)
    at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:382:23)
    at C:\automation\npm\node_modules\protractor\node_modules\jasminewd\index.js:94:14
    at [object Object].promise.ControlFlow.runInFrame_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
    at [object Object].promise.ControlFlow.runEventLoop_ (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1755:8)
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:2056:12)
    at goog.async.run.processWorkQueue (C:\automation\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
    at runMicrotasksCallback (node.js:337:7)
    at process._tickCallback (node.js:355:11)
From: Task: Asynchronous test function: it()
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\jasminewd\index.js:93:33)
    at [object Object].<anonymous> (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\async-callback.js:45:37)
    at [object Object].jasmine.Block.execute (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:1174:17)
    at [object Object].jasmine.Queue.next_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
    at [object Object].jasmine.Queue.start (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2162:8)
    at [object Object].jasmine.Spec.execute (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2503:14)
    at [object Object].jasmine.Queue.next_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2209:31)
    at onComplete (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Spec.finish (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2477:5)
    at [object Object].onComplete (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:2504:10)==== async task ====
Error
    at [object Object].<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:380:5)
    at [object Object].jasmine.Env.describe_ (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:913:21)
    at [object Object].jasmine.Env.describe (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:898:15)
    at describe (C:\automation\npm\node_modules\protractor\node_modules\minijasminenode\lib\jasmine-1.3.1.js:658:27)
    at Object.<anonymous> (C:\automation\tests\testCases\newApp\calendarTC.js:1:63)

You can use fs.readdir to get all the filenames, and then check them with a regular expression against the thing you are trying to match.

it('New App - Calendar - Print calendar', function(){
   $$("button.font-xs.md-button.ng-scope.md-ink-ripple.gray-btn").get(1).click();
   browser.driver.wait(function() {
      var filepath = 'c:\\automation\\tests\\downloaded\\';
      var matcher = /Schedule/;
      var foundFile = false;
      fs.readdirSync(filepath).forEach(function(filename) {
          if (matcher.test(filename)) {
             foundFile = true;
           }
       });
       return foundFile;
   }, 30000);
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM