Serentiy Report with protracor and cucumber - protractor

I have protractor cucumber example works fine, now I'm trying to create report by serenity.js
protractor.conf.js file
exports.config = {
getPageTimeout: 600000,
allScriptsTimeout: 700000,
framework: 'custom',
frameworkPath: require.resolve('serenity-js'),
capabilities: {
'browserName': 'chrome'
},
specs: [
'/home/git/adap_gateway/src/test/features/*.feature'
],
baseURL: 'http://localhost:8099/',
cucumberOpts: {
require: '/home/git/adap_gateway/src/test/javascript/stepDefinitions.js',
format: ['pretty'],
}
};
The feature file
Feature: Running Cucumber with Protractor
Scenario: Protractor and Cucumber Test
Given I go to "http://localhost:8099/#/"
When I add login credential
Then I go to scenario home page
Then I go to scenario details page
Then I go to edit attack tree page
Then build attack tree
ANd package.json file is
{
"name": "c",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"gulp": "^3.9.1",
"protractor-cucumber": "^0.1.8",
"protractor-cucumber-framework": "^3.1.0"
},
"devDependencies": {
"protractor-cucumber": "^0.1.8",
"serenity-cli": "^0.2.4",
"serenity-js": "^1.4.1",
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"prereport": "serenity update",
"report": "serenity run"
},
"author": "",
"license": "ISC"
}
But I get
I get E/launcher - Error: Error: EACCES: permission denied, scandir '/etc/cups/ssl' at Error (native) at Object.fs.readdirSync (fs.js:952:18) at GlobSync._readdir (/home/ali/node_modules/cucumber/node_modules/glob/sync.js:2‌​88:41) [18:15:41] E/launcher - Process exited with error code 100,Do you have any instructions?
Can any one help me please to fix this problem?

Related

Parse error Unexpected token '�' at 1:1 ��{ on flutter app when running firebase deploy

encounter the below message when trying to firebase deploy from root project
Error: Parse Error in ...\firestore.indexes.json
Unexpected token '�' at 1:1
��{
I have a flutter app, upon which I also have a functions folder. Below is the file position:
AppFolder
functions
.eslintrc.js
index.js
package.json
etc
lib
files relative to flutter app
test
test files relative to flutter app
web firestore.indexes.json
firebase.json
etc
I am running on windows 11 in a newly built pc (so maybe sth is missing?), other devs are running on mac, I have changed the EOF sequence to LF on the 3 files of the functions folder, I have also run these two commands inside the functions folder
npm install firebase-functions#latest firebase-admin#latest --save
npm install -g firebase-tools
npm version is 8.1.2
node version is v16.13.1
firestore.indexes.json is:
{
"indexes": [
{
"collectionGroup": "something1",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "created",
"order": "DESCENDING"
},
{
"fieldPath": "something2",
"order": "DESCENDING"
}
]
},
{
"collectionGroup": "something3",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "something4",
"order": "ASCENDING"
},
{
"fieldPath": "something5",
"order": "DESCENDING"
}
]
}
],
"fieldOverrides": []
}
.elslint.js is
module.exports = {
"root": true,
"env": {
es6: true,
node: true,
},
"extends": [
"eslint:recommended",
"google",
],
"rules": {
quotes: ["error", "double"],
},
"parserOptions": {
"ecmaVersion": 2020,
},
};
and package.json is
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "14"
},
"main": "index.js",
"dependencies": {
"axios": "^0.24.0",
"device-detector-js": "^3.0.0",
"firebase": "^9.2.0",
"firebase-admin": "^10.0.1",
"firebase-functions": "^3.16.0"
},
"devDependencies": {
"eslint": "^8.1.0",
"eslint-config-google": "^0.14.0",
"firebase-functions-test": "^0.3.3"
},
"private": true
}
Please keep in mind that in an older pc running windows 10 and I can deploy by changing only to the LF and running the above commands.
Just try to make a new text file and copy the content of generated file inside the new one. Then override the new file with firestore.indexes.json
Its obvious that the generated json file has some formatting problem.
I recently had this problem and found that it was resolved by changes to the firebase.json file:
Seek "predeploy":
Delete the code so that the outcome is "predeploy": []
After this, run the firebase deploy function again, and everything should be fine.
Thank you to Max for sharing this solution with me : )

ERROR #wdio/cli:utils: A service failed in the 'onPrepare' hook Error: Appium exited before timeout (exit code: 1) - Appium using emulator in VSCode

When trying to run I'm having the log below as ERROR #wdio/cli:utils: A service failed in the 'onPrepare' hook Error: Appium exited before timeout (exit code: 1)
package.json :
{
"name": "test2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "./node_modules/.bin/wdio wdio.conf.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"#wdio/cli": "^7.3.1"
},
"devDependencies": {
"#wdio/appium-service": "^7.3.1",
"#wdio/local-runner": "^7.3.1",
"#wdio/mocha-framework": "^7.3.1",
"#wdio/spec-reporter": "^7.3.1",
"#wdio/sync": "^7.3.1",
"chromedriver": "^89.0.0",
"wdio-chromedriver-service": "^7.0.0"
}
}

Can't use EJS hook in Strapi showing error TypeError: ctx.render is not a function

What is the bug?
I am trying to render a page using strapi-hook-ejs but it is not working even I followed all official documentation.
It is giving following error
[2020-10-13T03:34:15.198Z] error TypeError: ctx.render is not a function
at Object.page (C:\Users\noman\Desktop\TestAPI\api\home\controllers\home.js:11:20)
at dispatch (C:\Users\noman\Desktop\TestAPI\node_modules\koa-router\node_modules\koa-compose\index.js:44:32)
at next (C:\Users\noman\Desktop\TestAPI\node_modules\koa-router\node_modules\koa-compose\index.js:45:18)
at dispatch (C:\Users\noman\Desktop\TestAPI\node_modules\koa-compose\index.js:42:32)
at C:\Users\noman\Desktop\TestAPI\node_modules\strapi\lib\middlewares\router\utils\routerChecker.js:79:28
at dispatch (C:\Users\noman\Desktop\TestAPI\node_modules\koa-compose\index.js:42:32)
at module.exports (C:\Users\noman\Desktop\TestAPI\node_modules\strapi-plugin-users-permissions\config\policies\permissions.js:86:9)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async C:\Users\noman\Desktop\TestAPI\node_modules\strapi-utils\lib\policy.js:68:5
at async serve (C:\Users\noman\Desktop\TestAPI\node_modules\koa-static\index.js:59:5)
at async C:\Users\noman\Desktop\TestAPI\node_modules\strapi\lib\middlewares\xss\index.js:26:9
[2020-10-13T03:34:15.212Z] debug GET /home/page (39 ms) 500
[2020-10-13T03:34:15.255Z] debug GET /favicon.ico (1 ms) 200
Steps to reproduce the behavior
I installed strapi-hook-ejs (npm i strapi-hook-ejs --save)
Create a new hook.json file in config folder. (./config/hook.json)
Added this code
{
"ejs": {
"enabled": true,
"layout": false,
"viewExt": "ejs",
"partial": true,
"cache": false,
"debug": true
}
}
Created views folder and a home.ejs file in it (./views/home.ejs) with this code <h1><%=title%></h1>
Then I created a new controller and point a route to it.
module.exports = {
page: async ctx => {
return ctx.render('home', {title: 'My app title'});
},
};
Now when I am going to this route I am getting the error.
Expected behavior
Should render home page
My Package.json
{
"name": "source-api",
"private": true,
"version": "0.1.0",
"description": "A Strapi application",
"scripts": {
"develop": "strapi develop",
"start": "strapi start",
"build": "strapi build",
"strapi": "strapi"
},
"devDependencies": {},
"dependencies": {
"axios": "^0.20.0",
"strapi": "3.1.4",
"strapi-admin": "3.1.4",
"strapi-connector-mongoose": "3.1.4",
"strapi-hook-ejs": "^3.2.3",
"strapi-plugin-content-manager": "3.1.4",
"strapi-plugin-content-type-builder": "3.1.4",
"strapi-plugin-email": "3.1.4",
"strapi-plugin-upload": "3.1.4",
"strapi-plugin-users-permissions": "3.1.4",
"strapi-provider-upload-cloudinary": "^3.1.4",
"strapi-utils": "3.1.4"
},
"author": {
"name": "Nehal Ahmad"
},
"strapi": {
"uuid": "1034d7e9-73ba-49d4-8862-0d5d62ae7008"
},
"engines": {
"node": "12.x",
"npm": "6.x"
},
"license": "MIT"
}
System
Node.js version: v12.18.1
NPM version: 6.14.5
Strapi version: 3.1.4
Database: Mongo db
Operating system: Windows 10 pro
I have tried it on latest version of strapi.
I found answer on forum.strapi.io from user larsonnn
https://forum.strapi.io/t/cant-use-ejs-hook-showing-error-typeerror-ctx-render-is-not-a-function/416/9?u=nehal_ahmad

Using protractor with directconnect=true - how to fix - This version of ChromeDriver only supports Chrome version

package.json
{
"name": "test1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "npm run webdriver-update && npm run test-protractor",
"test-protractor": "protractor protractor.conf.js",
"webdriver-update": "webdriver-manager update"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"cucumber": "^6.0.5",
"jasmine-spec-reporter": "^4.2.1",
"protractor": "^5.4.2",
"protractor-cucumber-framework": "^6.2.0",
"rimraf": "^3.0.1"
}
}
protractor.conf.js
const protractor = require('protractor');
// console.log('browser = ', browser);
exports.config = {
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
getPageTimeout: 60000,
allScriptsTimeout: 500000,
specs: ['features/*.feature'],
baseURL: 'http://www.google.com/',
cucumberOpts: {
require: [
'./features/step_definitions/stepDefinitions.js'
],
tags: false,
profile: false,
'no-source': true
},
onPrepare: function() {
// browser.ignoreSynchronization = true;
// browser.manage().window().maximize();
// browser.manage().timeouts().implicitlyWait(5000);
},
capabilities: {
browserName: "chrome",
chromeOptions: {
args: [
'--headless',
'--disaple-gpu',
'--window-size=1920,1080',
'--no-sandbox',
'--disable-dev-shm-usage'
],
prefs: {
download: {
prompt_for_download: false,
extensions_to_open: ''
},
profile: {
default_content_settings: {
popups: 0
}
},
directory_upgrade: true
},
useAutomationExtension: false
}
},
// connec direct to webdriver, instead of local selenium server!
directConnect: true,
ignoreUncaughtException: true,
onComplete: () => {
// Reporter.createHtmlReport();
}
}
Error
Session not created: This version of ChromeDriver only supports Chrome version 80
I can manually set update-config.json andhave downloaded many different chromedriver versions, but I still get the same error.
Example:
update-config.json
{"standalone":{"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar","all":["node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar"]},"gecko":{"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.exe","all":["node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.exe"]},"chrome":{"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_75.0.3770.8.exe","all":["node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_75.0.3770.8.exe","node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_75.0.3770.8.exe"]}}
Error
E/launcher - session not created: This version of ChromeDriver only supports Chrome version 75
This is version 75, so what is happening exactly?
I am not using angular. I am using directconnect=true, and set everything to be headless. I did have it working at one point but lost the code and stuck in this loop.
ok, so I have followed the advice from this thread:
- protractor 2.5.4 E/launcher - session not created: This version of ChromeDriver only supports Chrome version 79
I am now using chromedriver version: 78.0.3904.105.
node node_modules/protractor/bin/webdriver-manager clean
node node_modules/protractor/bin/webdriver-manager update
node node_modules/protractor/bin/webdriver-manager --versions.chrome=78.0.3904.105
Ensure this version - chromedriver_78.0.3904.105 - is updated in all references in update-config.json file.
update-config.json
{
"standalone":{
"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar",
"all":[
"node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar"
]
},
"gecko":{
"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.exe",
"all":[
"node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.26.0.exe"
]
},
"chrome":{
"last":"node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_78.0.3904.105.exe",
"all":[
"node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_78.0.3904.105.exe",
"node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_78.0.3904.105.exe"
]
}
}
run protractor with option: --no-webdriver-update
"scripts": {
"test": "npm run test-protractor --no-webdriver-update"
},
Now it works!

Facing issue, when serenity js library is included for Cucumber protractor typescript tests

I am learning Cucumber BDD with serenity js library for reporting purpose off Angular website . I am using Type script as programming language.
I am able to generate the cucumber report for different feature file scenarios. But when i am trying to include the serenity library for report enhancement, i am facing the below issue. -
Issue is :
PS R:\protractor\protractor-cucumber-typescript> tsc
PS R:\protractor\protractor-cucumber-typescript> npm test
> protractor-typescript-cucumber#3.0.0 pretest R:\protractor\protractor-cucumber-typescript
> serenity update
info: Serenity BDD CLI jar file is up to date :-)
> protractor-typescript-cucumber#3.0.0 test R:\protractor\protractor-cucumber-typescript
> protractor typeScript/config/config.js
[15:29:46] I/launcher - Running 1 instances of WebDriver
[15:29:46] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub
[15:29:54] E/launcher - Error: TypeError: Path must be a string. Received true
at assertPath (path.js:7:11)
at Object.basename (path.js:801:5)
at R:\protractor\protractor-cucumber-typescript\node_modules\cucumber\lib\cucumber\cli\configuration.js:11:27
at Array.forEach (native)
at Function.Configuration (R:\protractor\protractor-cucumber-typescript\node_modules\cucumber\lib\cucumber\cli\configuration.js:10:10)
at getConfiguration (R:\protractor\protractor-cucumber-typescript\node_modules\cucumber\lib\cucumber\cli.js:63:38)
at Object.run (R:\protractor\protractor-cucumber-typescript\node_modules\cucumber\lib\cucumber\cli.js:69:27)
at R:\protractor\protractor-cucumber-typescript\node_modules\serenity-js\src\serenity-cucumber\cucumber_test_framework.ts:24:51
at CucumberTestFramework.run (R:\protractor\protractor-cucumber-typescript\node_modules\serenity-js\src\serenity-cucumber\cucumber_test_framework.ts
:21:16)
at R:\protractor\protractor-cucumber-typescript\node_modules\serenity-js\src\serenity-protractor\framework\serenity_protractor_framework.ts:52:35
[15:29:54] E/launcher - Process exited with error code 100
npm ERR! Test failed. See above for more details.
Its not giving any traces of the files i have. Its showing me a different file.
Serenity dependency got downloaded, But when the protractor conf.js file run. I am getting above issue
Files look like below -
Conf.ts file looks like below :
import * as path from "path";
import { browser, Config } from "protractor";
const crew = require('serenity-js/lib/stage_crew');
export const config: Config = {
seleniumAddress: "http://127.0.0.1:4444/wd/hub",
SELENIUM_PROMISE_MANAGER: false,
// baseUrl: "http://www.google.com",
baseUrl2: "https://angularjs.org/",
framework: "custom",
frameworkPath: require.resolve('serenity-js'),
specs: [
"../../features/*Home.feature",
],
cucumberOpts: {
// require: ["../../stepdefinitions/*.ts","../../support/stepdefinitions/*.js"],
require: ["stepdefinitions/*/**.ts","support/stepdefinitions/*/**.js"],
// strict: true,
format: "pretty",
compiler: "ts:ts-node/register",
},
serenity: {
dialect: 'cucumber',
crew: [
crew.serenityBDDReporter(),
crew.photographer(),
crew.consoleReporter()
]
},
capabilities: {
browserName: "chrome",
},
onPrepare: () => {
browser.ignoreSynchronization = true;
browser.manage().window().maximize();
browser.get("https://angularjs.org/");
},
};
My package.json file looks like below :
{
"name": "protractor-typescript-cucumber",
"keywords": [
"protractor",
"cucumber",
"typescript",
"angular",
"angularjs",
"testing",
"behaviour driven development",
"bdd",
"selenium",
"webdriverJS",
"gherkin",
"automation testing"
],
"main": "index.js",
"scripts": {
"build": "tsc",
"clean": "rimraf typeScript/",
"clean-build": "npm run clean && npm run build",
"test": "protractor typeScript/config/config.js",
"webdriver-update": "webdriver-manager update",
"webdriver-start": "webdriver-manager start",
"pretest": "serenity update",
"report": "serenity run"
},
"devDependencies": {
"#types/cucumber": "^2.0.4",
"#types/node": "^8.0.3",
"#types/selenium-webdriver": "^3.0.7",
"chai": "^4.0.2",
"chai-as-promised": "^7.0.0",
"chai-smoothie": "^0.3.2",
"cucumber": "1.3.2",
"cucumber-html-reporter": "^3.0.4",
"mkdirp": "^0.5.1",
"protractor": "^5.1.2",
"protractor-cucumber": "^0.1.8",
"protractor-cucumber-framework": "^4.0.8",
"rimraf": "^2.6.2",
"serenity-cli": "^0.2.4",
"serenity-js": "^1.4.1",
"standard-loader": "^6.0.1",
"ts-node": "^3.3.0",
"typescript": "^2.5.3"
},
"dependencies": {
"#types/chai": "^4.0.4"
}
}
Please update me, where i am going wrong