Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is not assignable to parameter of type 'Expected<Promise<string>>' in editor

My tests are passing from command line, however I edit the typescript source using Atom.

And when I open one of the test files in my editor, I'm seeing an error on this line:

expect(pageObject.name.getText()).toEqual('Some name');

This is the error:

Typescript

Error
Argument of type '"Some name"' is not assignable to parameter of type 'Expected<Promise<string>>'.at line 16 col 50

Why does this show in my editor? Yet tests pass.

Command to run protractor tests:

protractor dist/protractor.config.js

Snippet from package.json

"dependencies": {
    "typescript": "2.3.3"
},
"devDependencies": {
    "@types/jasmine": "2.5.45",
    "@types/node": "^7.0.13",
    "jasmine-core": "^2.6.0",
    "jasmine-spec-reporter": "^4.1.0",
    "protractor": "^5.1.2"
}

tsconfig.fvt.test.json

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "noUnusedLocals": true,
    "moduleResolution": "node",
    "sourceMap": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noUnusedParameters": true,
    "outDir": "dist",
    "skipLibCheck": true,
    "target": "ES5",
    "lib": [
      "dom", "es5", "es6", "scripthost"
    ],
    "types": ["jasmine"]
  },
  "include": [
    "protractor.config.ts",
    "test/e2e/**/*.ts"
  ]
}
like image 950
bobbyrne01 Avatar asked Jun 15 '17 16:06

bobbyrne01


2 Answers

getText() returns promise. See the doc.

If you want to assert text from an element you need chai-as-promise. See example.

like image 89
Kacper Avatar answered Nov 08 '22 22:11

Kacper


Currently, you can try

npm i "@types/jasminewd2" -D

and add jasminewd2 in your tsconfig.json compilerOptions.types

I met the problem either with protractor. It was the typing bug. Here is the issue link.

like image 35
xianshenglu Avatar answered Nov 09 '22 00:11

xianshenglu