From 91d0ddbb000ce96a313bfcdcfc9f0f7f3617365c Mon Sep 17 00:00:00 2001 From: davemess34 Date: Thu, 30 Nov 2017 20:28:14 -0800 Subject: [PATCH 1/8] latest --- .../projectQuestions/computer_vision.v1.0.js | 160 ++++++++++++++++++ .../typeToSpecification.json | 1 + src/config/projectWizard/index.js | 65 +++++++ 3 files changed, 226 insertions(+) create mode 100644 src/config/projectQuestions/computer_vision.v1.0.js diff --git a/src/config/projectQuestions/computer_vision.v1.0.js b/src/config/projectQuestions/computer_vision.v1.0.js new file mode 100644 index 000000000..774418ee6 --- /dev/null +++ b/src/config/projectQuestions/computer_vision.v1.0.js @@ -0,0 +1,160 @@ +import _ from 'lodash' +import NumberText from '../../components/NumberText/NumberText' +import { findProduct } from '../projectWizard' + + +const isFileRequired = (project, subSections) => { + const subSection = _.find(subSections, (s) => s.type === 'questions') + const fields = _.filter(subSection.questions, q => q.type.indexOf('see-attached') > -1) + // iterate over all seeAttached type fields to check + // if any see attached is checked. + return _.some(_.map( + _.map(fields, 'fieldName'), + fn => _.get(project, `${fn}.seeAttached`) + )) +} + +const sections = [ + { + id: 'appDefinition', + title: (project, showProduct) => { + const product = _.get(project, 'details.products[0]') + if (showProduct && product) { + const prd = findProduct(product) + if (prd) return prd.name + } + return 'Definition' + }, + required: true, + description: 'Please answer a few basic questions about your project. You can also provide the needed information in a supporting document--add a link in the notes section or upload it below.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name to your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'questions', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + fieldName: 'description', + // required is not needed if we specifiy validations + // required: true, + validations: 'isRequired,minLength:160', + validationErrors: { + isRequired: 'Please provide your objectives', + minLength: 'Please enter at least 160 characters' + }, + description: 'Brief Description of your objectives', + title: 'Objectives', + type: 'textbox' + } + + ] + } + + ] + }, + + { + id: 'files', + required: isFileRequired, + title: (project) => `Project Files (${_.get(project, 'attachments', []).length})` || 'Files', + description: '', + type: 'files', + fieldName: 'attachments' + } +] + +export default sections + +export const basicSections = [ + { + id: 'appDefinition', + title: '', + required: true, + description: 'Please answer a few basic questions about your project and, as an option, add links to supporting documents in the “Notes” section. If you have any files to upload, you’ll be able to do so later.', + subSections: [ + { + id: 'projectName', + required: true, + validationError: 'Please provide a name to your project', + fieldName: 'name', + description: '', + title: 'Project Name', + type: 'project-name' + }, + { + id: 'questions', + required: true, + hideTitle: true, + title: 'Questions', + description: '', + type: 'questions', + questions: [ + { + id: 'projectInfo', + fieldName: 'description', + // required is not needed if we specifiy validations + // required: true, + validations: 'isRequired,minLength:160', + validationErrors: { + isRequired: 'Please provide your objectives', + minLength: 'Please enter at least 160 characters' + }, + description: 'Brief Description of your objectives', + title: 'Objectives', + type: 'textbox' + }, + + { + icon: 'question', + title: 'Do you have ground truth defined?', + description: '', + + fieldName: 'details.vision.groundtruth', + type: 'radio-group', + options: [ + {value: 'true', label: 'Yes'}, + {value: 'false', label: 'No'} + ], + required: true, + validationError: 'Please select one' + }, + { + icon: 'question', + title: 'Describe your ground truth?', + description: '(if applicable)', + type: 'textbox', + fieldName: 'details.vision.groundtruthDesc' + }, + { + icon: 'question', + title: 'Describe your data set', + description: '(if applicable)', + type: 'textbox', + fieldName: 'details.vision.dataDesc' + } + + ] + }, + { + id: 'notes', + fieldName: 'details.appDefinition.notes', + title: 'Additional Notes', + description: 'Please detail any other additional information', + type: 'notes' + } + ] + } +] diff --git a/src/config/projectSpecification/typeToSpecification.json b/src/config/projectSpecification/typeToSpecification.json index 48493d39d..42bc2bac1 100644 --- a/src/config/projectSpecification/typeToSpecification.json +++ b/src/config/projectSpecification/typeToSpecification.json @@ -16,6 +16,7 @@ "digital_accessability": "crowd_testing.v1.0", "open_source_automation": "crowd_testing.v1.0", "consulting_adivisory": "crowd_testing.v1.0", + "computer_vision": "computer_vision.v1.0", "api_dev": "app_dev.v1.0", "frontend_dev" : "app_dev.v1.0" } diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index f92a1dd81..a70a9633c 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -57,6 +57,34 @@ const products = { icon: 'product-chatbot-chatbot', id: 'generic_chatbot', aliases: ['chatbot', 'generic_chatbot'] + }, + 'Computer Vision': { + brief: 'TBD', + details: 'Work with images to recognize patterns, compute correspondences, etc', + icon: 'product-qa-crowd-testing', + id: 'computer_vision', + aliases: ['computer-vision', 'computer_vision'] + }, + 'Algorithm Optimization': { + brief: 'TBD', + details: 'Boost the performance (speed or accuracy) of an existing or new algorithm', + icon: 'product-qa-crowd-testing', + id: 'algorithm_optimization', + aliases: ['algorithm_optimization', 'algorithm-optimization', 'algo_optimization'] + }, + 'Predictive Analytics': { + brief: 'TBD', + details: 'Starting with a set of data and well-defined objectives, model trends and predict outcomes', + icon: 'product-qa-crowd-testing', + id: 'predictive-analytics', + aliases: ['predictive-analytics', 'predictive_analytics'] + }, + 'Data Exploration': { + brief: 'TBD', + details: 'Ask a crowd of experts to look at your data, understand your goals, and suggest solutions', + icon: 'product-qa-crowd-testing', + id: 'data-exploration', + aliases: ['data-exploration', 'data_exploration'] } } }, @@ -197,6 +225,43 @@ const products = { disabled: true } } + }, + 'Analytics': { + icon: 'product-cat-qa', + info: 'Test and fix bugs in your software', + question: 'What kind of quality assurance (QA) do you need?', + id: 'analytics', + aliases: ['all-analytics'], + subtypes: { + 'Computer Vision': { + brief: 'TBD', + details: 'Work with images to recognize patterns, compute correspondences, etc', + icon: 'product-qa-crowd-testing', + id: 'computer_vision', + aliases: ['computer-vision', 'computer_vision'] + }, + 'Algorithm Optimization': { + brief: 'TBD', + details: 'Boost the performance (speed or accuracy) of an existing or new algorithm', + icon: 'product-qa-crowd-testing', + id: 'algorithm_optimization', + aliases: ['algorithm_optimization', 'algorithm-optimization', 'algo_optimization'] + }, + 'Predictive Analytics': { + brief: 'TBD', + details: 'Starting with a set of data and well-defined objectives, model trends and predict outcomes', + icon: 'product-qa-crowd-testing', + id: 'predictive-analytics', + aliases: ['predictive-analytics', 'predictive_analytics'] + }, + 'Data Exploration': { + brief: 'TBD', + details: 'Ask a crowd of experts to look at your data, understand your goals, and suggest solutions', + icon: 'product-qa-crowd-testing', + id: 'data-exploration', + aliases: ['data-exploration', 'data_exploration'] + } + } } } From 1c22cc6482f11599af25359f5eda7f786dc0b357 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Fri, 1 Dec 2017 12:03:47 +0530 Subject: [PATCH 2/8] =?UTF-8?q?Github=20issue#1392,=20Icon=20on=20project?= =?UTF-8?q?=20overview=20is=20not=20correct=20=E2=80=94=20Fixed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../list/components/Projects/ProjectCardHeader.jsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/projects/list/components/Projects/ProjectCardHeader.jsx b/src/projects/list/components/Projects/ProjectCardHeader.jsx index ce6a11766..9beb00b59 100644 --- a/src/projects/list/components/Projects/ProjectCardHeader.jsx +++ b/src/projects/list/components/Projects/ProjectCardHeader.jsx @@ -2,20 +2,21 @@ import _ from 'lodash' import moment from 'moment' import React, { PropTypes as PT } from 'react' import TextTruncate from 'react-text-truncate' -import { findCategory } from '../../../../config/projectWizard' +import { findProduct } from '../../../../config/projectWizard' import SVGIconImage from '../../../../components/SVGIconImage' import './ProjectCardHeader.scss' function ProjectCardHeader({ project }) { if (!project) return null - const category = findCategory(project.type) - // icon for the category, use default generic work project icon for categories which no longer exist now - const categoryIcon = _.get(category, 'icon', 'tech-32px-outline-work-project') + const productType = _.get(project, 'details.products[0]') + const product = findProduct(productType) + // icon for the product, use default generic work project icon for categories which no longer exist now + const productIcon = _.get(product, 'icon', 'tech-32px-outline-work-project') return (
-
+
Date: Fri, 1 Dec 2017 13:08:26 +0530 Subject: [PATCH 3/8] =?UTF-8?q?Github=20issue#1391,=20Hide=20project=20fro?= =?UTF-8?q?m=20catalogue.=20=E2=80=94=20Done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/projectWizard/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index a70a9633c..0dda8ca7b 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -198,7 +198,8 @@ const products = { details: 'Webpage rendering effiency, Load, Stress and Endurance Test', icon: 'product-qa-website-performance', id: 'performance_testing', - aliases: ['performance-testing', 'performance_testing'] + aliases: ['performance-testing', 'performance_testing'], + hidden: true }, 'Digital Accessibility': { brief: 'TBD', From 7a7aee774ce5f5a5b63e0170b6a6f589ac6bc485 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Fri, 1 Dec 2017 13:18:48 +0530 Subject: [PATCH 4/8] =?UTF-8?q?Github=20#1387,=20Performance=20testing=20a?= =?UTF-8?q?s=20new=20offering=20under=20QA=20projects=20=E2=80=94=20Fixed?= =?UTF-8?q?=20lint=20=E2=80=94=20Hidden=20the=20Analytics=20category=20whi?= =?UTF-8?q?ch=20newly=20added?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/projectQuestions/computer_vision.v1.0.js | 2 +- src/config/projectWizard/index.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/config/projectQuestions/computer_vision.v1.0.js b/src/config/projectQuestions/computer_vision.v1.0.js index 774418ee6..c177b74d7 100644 --- a/src/config/projectQuestions/computer_vision.v1.0.js +++ b/src/config/projectQuestions/computer_vision.v1.0.js @@ -1,5 +1,5 @@ import _ from 'lodash' -import NumberText from '../../components/NumberText/NumberText' +// import NumberText from '../../components/NumberText/NumberText' import { findProduct } from '../projectWizard' diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index 0dda8ca7b..29c610068 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -63,7 +63,8 @@ const products = { details: 'Work with images to recognize patterns, compute correspondences, etc', icon: 'product-qa-crowd-testing', id: 'computer_vision', - aliases: ['computer-vision', 'computer_vision'] + aliases: ['computer-vision', 'computer_vision'], + hidden : true }, 'Algorithm Optimization': { brief: 'TBD', @@ -227,12 +228,13 @@ const products = { } } }, - 'Analytics': { + Analytics: { icon: 'product-cat-qa', info: 'Test and fix bugs in your software', question: 'What kind of quality assurance (QA) do you need?', id: 'analytics', aliases: ['all-analytics'], + hidden: true, subtypes: { 'Computer Vision': { brief: 'TBD', From 0cce9da1ff023b3c7baa97779e49c553c6f61e79 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Fri, 1 Dec 2017 16:44:18 +0530 Subject: [PATCH 5/8] Temp deployment to dev --- circle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circle.yml b/circle.yml index 8c97ecdfa..ecf14c803 100644 --- a/circle.yml +++ b/circle.yml @@ -19,7 +19,7 @@ compile: deployment: development: - branch: [dev, 'feature/move_my_projects_filter_to_primary_toolbar'] + branch: [dev, 'feature/performance-testing'] owner: appirio-tech commands: - ./deploy.sh DEV From 39e384d05d0621b637d9f8634e784be4f4cfa9b1 Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 4 Dec 2017 16:42:37 +0530 Subject: [PATCH 6/8] =?UTF-8?q?Github=20#1387,=20Performance=20testing=20a?= =?UTF-8?q?s=20new=20offering=20under=20QA=20projects=20=E2=80=94=20Added?= =?UTF-8?q?=20new=20sections,=20cleaned=20up=20old=20sections=20to=20match?= =?UTF-8?q?=20the=20template=20shared=20by=20Dhanesh=20Github=20issue#1399?= =?UTF-8?q?,=20Add-ons=20section=20is=20not=20mandatory=20=E2=80=94=20Fixe?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../performance_testing.v1.0.js | 338 +++++++++++++----- .../detail/components/ProjectSpecSidebar.jsx | 6 +- src/projects/detail/components/SidebarNav.jsx | 3 +- 3 files changed, 261 insertions(+), 86 deletions(-) diff --git a/src/config/projectQuestions/performance_testing.v1.0.js b/src/config/projectQuestions/performance_testing.v1.0.js index 398da9a28..172f2e7d5 100644 --- a/src/config/projectQuestions/performance_testing.v1.0.js +++ b/src/config/projectQuestions/performance_testing.v1.0.js @@ -45,16 +45,6 @@ const sections = [ description: '', type: 'questions', questions: [ - { - icon: 'question', - id: 'targetApplication.appName', - fieldName: 'details.targetApplication.appName', - title: 'Name of the application we will test', - // description: '', - type: 'textbox', - required: true, - validationError: 'Please provide name of the target application' - }, { id: 'projectInfo', fieldName: 'description', @@ -65,24 +55,55 @@ const sections = [ isRequired: 'Please provide a description', minLength: 'Please enter at least 160 characters' }, - description: 'Brief Description', - title: 'Description', + description: 'In 160 or more characters tell us what is the app, main functions, problem area, etc..', + title: 'Please provide brief description of the system, application to be Performance tested', type: 'textbox' }, { icon: 'question', - title: 'Expected load on the platform exercised during Performance Test? ', - description: '', - fieldName: 'details.testingNeeds.expectedLoad', - type: 'tiled-radio-group', + title: 'What is the load on system in terms concurrent users for Performance Testing?', + description: '(Unit package includes 500 virtual users, additional load would require Top-Ups)', + type: 'slide-radiogroup', options: [ - { value: '60%', title: '% load', icon: NumberText, iconOptions: { number: '60' }, desc: 'endurance testing', price: 7000 }, - { value: '100%', title: '% load', icon: NumberText, iconOptions: { number: '100' }, desc: 'load testing', price: 5000 }, - { value: '120%', title: '% load', icon: NumberText, iconOptions: { number: '120' }, desc: 'stress testing', price: 7000 } + { value: 'upto-500', title: 'Upto 500' }, + { value: 'upto-1000', title: 'Upto 1000' }, + { value: 'upto-5000', title: 'Upto 5000' }, + { value: 'above-5000', title: 'More than 5000' } ], + fieldName: 'details.loadDetails.concurrentUsersCount', required: true, validationError: 'Please provide expected load' }, + { + icon: 'question', + title: 'What is the count of business processes - transactions to be included for Performance Testing?', + description: '(Unit package covers 10 transactions, additional transactions would require Top-Ups)', + fieldName: 'details.loadDetails.businessProcessesCount', + type: 'slide-radiogroup', + options: [ + { value: 'upto-5', title: 'Upto 5'}, + { value: 'upto-10', title: 'Upto 10' }, + { value: 'upto-25', title: 'Upto 25' }, + { value: 'above-25', title: 'More than 25' } + ], + required: true, + validationError: 'Please provide expected number of business processes' + }, + { + icon: 'question', + title: 'What is the expected hours of execution for all different Performance Tests to be conducted?', + description: '(Unit package covers 10 hours of execution, additional execution time would require Top-Ups)', + fieldName: 'details.loadDetails.expectedExecutionHours', + type: 'slide-radiogroup', + options: [ + { value: 'upto-5', title: 'Upto 5'}, + { value: 'upto-10', title: 'Upto 10' }, + { value: 'upto-25', title: 'Upto 25' }, + { value: 'above-25', title: 'More than 25' } + ], + required: true, + validationError: 'Please provide expected hours of execution' + }, { icon: 'question', title: 'Please select any additional add-ons?', @@ -100,9 +121,9 @@ const sections = [ { value: 'myscripts', label: 'Modify/Use own scripts ($5,000)' }, { value: 'late', label: 'Late Entry - 1 week lead time ($2,000)' } ], + required: false, fieldName: 'details.testingNeeds.addons' } - ] }, { @@ -113,6 +134,14 @@ const sections = [ requirements and/or test cases. After creating \ your project you will be able to upload files.', type: 'notes' + }, + { + id: 'files', + required: isFileRequired, + title: (project) => `Project Files (${_.get(project, 'attachments', []).length})` || 'Files', + description: '', + type: 'files', + fieldName: 'attachments' } ] }, @@ -123,7 +152,7 @@ const sections = [ description: 'Please provide information on specific points of contacts.', subSections: [ { - id: 'scope', + id: 'spoc', required: false, title: 'SPOCs', description: '', @@ -193,15 +222,155 @@ const sections = [ } } ] - }, - + } + ] + }, + { + id: 'systemOverview', + title: 'System Overview', + required: false, + description: 'Please provide the overview of the system to be tested', + subSections: [ { - id: 'files', - required: isFileRequired, - title: (project) => `Project Files (${_.get(project, 'attachments', []).length})` || 'Files', + id: 'questions', + // required: true, + hideTitle: true, + title: 'Questions', description: '', - type: 'files', - fieldName: 'attachments' + type: 'questions', + questions: [ + { + id: 'architecture', + // required: true, + // validationError: 'Please provide architecture details of the applciation', + fieldName: 'details.targetApplication.architecture', + description: '', + title: 'What is the architecture of the System? Please share/embed the Application and Server architecture diagram. Also share Non functional requriements docs and High/Low level design docs if available', + type: 'textbox' + }, + { + id: 'developmentPlatform', + icon: 'question', + title: 'What is the application development platform?', + description: '', + type: 'checkbox-group', + options: [ + { value: 'dotnet', label: '.Net' }, + { value: 'j2ee', label: 'J2EE' }, + { value: 'ria', label: 'Rich Internet Applications' }, + { value: 'oracle', label: 'Oracle Technology' }, + { value: 'sap', label: 'SAP' }, + { value: 'mainframe', label: 'Mainframe' }, + { value: 'adobe-flex', label: 'Adobe Flex' }, + { value: 'others', label: 'Others' } + ], + fieldName: 'details.targetApplication.developmentPlatform', + // required: true, + // validationError: 'Please provide development platform of the application' + }, + { + id: 'frontEnd', + icon: 'question', + title: 'What is the front end of the system?', + description: '', + fieldName: 'details.targetApplication.frontEnd', + type: 'checkbox-group', + options: [ + { value: 'web-browser', label: 'Web Browser - Thin Client'}, + { value: 'desktop-app', label: 'Desktop App (Executable) - Thick Client' }, + { value: 'citrix', label: 'Citrix based Desktop App (Executable)' }, + { value: 'java', label: 'Java based (with Swing/Applets)' }, + { value: 'oracle-forms', label: 'Web based Oracle Forms' }, + { value: 'other', label: 'Any other' } + ], + // required: true, + // validationError: 'Please provide front end used in the application' + }, + { + icon: 'question', + title: 'What are the web servers used?', + description: '(For eg. Webserver can be Apache, IIS etc.)', + fieldName: 'details.targetApplication.webBrowsers', + type: 'textbox', + // required: true, + // validationError: 'Please provide target web browsers' + }, + { + icon: 'question', + title: 'What ae the application servers used?', + description: '(For eg. Application server can be JBoss or Weblogic or Websphere etc.)', + fieldName: 'details.targetApplication.appServers', + type: 'textbox', + // required: true, + // validationError: 'Please provide application servers used' + }, + { + icon: 'question', + title: 'What is the back end of your application?', + description: '(For eg. Back end can be Oracle, MS SQL or Sybase etc)', + fieldName: 'details.targetApplication.backEnd', + type: 'textbox', + // required: true, + // validationError: 'Please provide back end used in the application' + }, + { + icon: 'question', + title: 'If the back end is a legacy system then specify the below', + description: 'Mainframe(S390), AS400, Others', + fieldName: 'details.targetApplication.legacyBackEnd', + type: 'textbox' + }, + { + icon: 'question', + title: 'What is the middleware used?', + description: '(For eg. Middleware can be MQSeries or TIBCO or Webmethod etc)', + fieldName: 'details.targetApplication.middleware', + type: 'textbox', + // required: true, + // validationError: 'Please provide middleware used in the application' + }, + { + icon: 'question', + title: 'Please specify if web services are used and their functions', + description: '(For eg. SOAP/REST Webservices deployed in App server for new customer creation and maintenance)', + fieldName: 'details.targetApplication.webservices', + type: 'textbox', + // required: true, + // validationError: 'Please provide web services used in the application' + }, + { + id: 'targetApplication.authMode', + icon: 'question', + title: 'What is the authentication mode used by the Application?', + description: '', + fieldName: 'details.targetApplication.authMode', + type: 'checkbox-group', + options: [ + { value: 'ntlm', label: 'NTLM'}, + { value: 'sso', label: 'Siteminder/SSO' }, + { value: 'ldap', label: 'LDAP' }, + { value: 'others', label: 'Others' } + ], + // required: true, + // validationError: 'Please provide authentication mode of the application' + }, + { + id: 'targetApplication.interfaces', + icon: 'question', + title: 'What Interfaces does the application has?', + description: '', + fieldName: 'details.targetApplication.interfaces', + type: 'checkbox-group', + options: [ + { value: 'vendor-system', label: 'Vendor System'}, + { value: 'document-mgmt-system', label: 'Document Mgmt System' }, + { value: 'payments', label: 'Payments' }, + { value: 'other', label: 'Others' } + ], + // required: true, + // validationError: 'Please provide interfaces used in the application' + } + ] } ] }, @@ -212,27 +381,28 @@ const sections = [ subSections: [ { id: 'perfTestEnvSec', - title: 'Details', + title: 'Questions', + hideTitle: true, description: '', type: 'questions', questions: [ { icon: 'question', - fieldName: 'details.perfTestEnv.simulators', + fieldName: 'details.perfTestEnv.missingCompSimulators', description: '', title: 'Are the simulators/stubs available in test enviornemnt for the components not avaiable and do they support concurrent request simulation?', type: 'textbox' }, { icon: 'question', - fieldName: 'details.perfTestEnv.vendors', + fieldName: 'details.perfTestEnv.thirdPartyStubs', description: '', title: 'Will online interfaces/stubs for the payment systems, vendor systems etc. be available for performance testing?', type: 'textbox' }, { icon: 'question', - fieldName: 'details.perfTestEnv.vendors', + fieldName: 'details.perfTestEnv.testDataAvailability', description: '', title: 'Please provide details on test data availability? A) Resident or master test data in DB e.g. Customers, products, locations etc. B) User specific data e.g. User Ids, email, credit card, order number etc. Who will support creating/importing/ masking test data', type: 'textbox' @@ -246,10 +416,14 @@ const sections = [ }, { icon: 'question', - fieldName: 'details.perfTestEnv.cloud', - description: '', - title: 'Are the applications hosted on physical servers or virtual/cloud infrastructure?', - type: 'textbox' + fieldName: 'details.perfTestEnv.hostedOn', + description: 'Are the applications hosted on physical servers or virtual/cloud infrastructure', + title: 'Where are applications hosted?', + type: 'radio-group', + options: [ + {value: 'physical-servers', label: 'Physical servers'}, + {value: 'cloud', label: 'Virtual/Cloud infrastructure'} + ] }, { icon: 'question', @@ -280,7 +454,7 @@ in scope?', }, { icon: 'question', - fieldName: 'details.perfTestEnv.saasTools', + fieldName: 'details.perfTestEnv.saasAllowPortsOpening', description: '', title: 'In case of Cloud based or SaaS performance testing tools, will your organisation allow to open necessary ports in firewall to inject load on to application in test environment.', type: 'textbox' @@ -296,7 +470,8 @@ in scope?', subSections: [ { id: 'prevDetails', - title: 'Details', + title: 'Questions', + hideTitle: true, description: '', type: 'questions', questions: [ @@ -323,18 +498,25 @@ in scope?', }, { icon: 'question', - fieldName: 'details.prevDetails.types', + fieldName: 'details.prevDetails.typesOfTests', description: '', title: 'What different types of tests carried out and measurements captured?', type: 'textbox' }, { icon: 'question', - fieldName: 'details.prevDetails.tools', + fieldName: 'details.prevDetails.monitoringTools', description: '', title: 'What were the performance testing and performance monitoring tools used?', type: 'textbox' }, + { + icon: 'question', + fieldName: 'details.prevDetails.testScripts', + description: '', + title: 'Are the performance test scenarios and automated test scripts available at project location?', + type: 'textbox' + }, { icon: 'question', fieldName: 'details.prevDetails.issues', @@ -383,15 +565,6 @@ export const basicSections = [ description: '', type: 'questions', questions: [ - { - icon: 'question', - title: 'Name of the Application to be tested', - description: 'Please enter the name of the application being tested', - type: 'textbox', - fieldName: 'details.targetApplication.appName', - required: true, - validationError: 'Please provide name of the target application' - }, { id: 'projectInfo', fieldName: 'description', @@ -403,56 +576,53 @@ export const basicSections = [ minLength: 'Please enter at least 160 characters' }, description: 'In 160 or more characters tell us what is the app, main functions, problem area, etc..', - title: 'Description of the Application to be tested', + title: 'Please provide brief description of the system, application to be Performance tested', type: 'textbox' }, { icon: 'question', - title: 'What type of tests would you like to be conducted?', - description: 'Please select all that apply', - type: 'checkbox-group', + title: 'What is the load on system in terms concurrent users for Performance Testing?', + description: '(Unit package includes 500 virtual users, additional load would require Top-Ups)', + type: 'slide-radiogroup', options: [ - { value: 'load', label: 'Load' }, - { value: 'stress', label: 'Stress' }, - { value: 'endurance', label: 'Endurance' }, - { value: 'other', label: 'Other' } + { value: 'upto-500', title: 'Upto 500' }, + { value: 'upto-1000', title: 'Upto 1000' }, + { value: 'upto-5000', title: 'Upto 5000' }, + { value: 'above-5000', title: 'More than 5000' } ], - fieldName: 'details.appDefinition.perfTestingTypes', + fieldName: 'details.loadDetails.concurrentUsersCount', required: true, - validationError: 'Please select at least one type of tests' + validationError: 'Please provide expected load' }, { icon: 'question', - title: 'Expected load during Performance Test', - description: 'How much do you want us to load the platform during Performance Test? Higher loads can uncover more problems.', - fieldName: 'details.testingNeeds.expectedLoad', - type: 'tiled-radio-group', + title: 'What is the count of business processes - transactions to be included for Performance Testing?', + description: '(Unit package covers 10 transactions, additional transactions would require Top-Ups)', + fieldName: 'details.loadDetails.businessProcessesCount', + type: 'slide-radiogroup', options: [ - { value: '60%', title: '% load', icon: NumberText, iconOptions: { number: '60' }, desc: 'endurance testing', price: 7000 }, - { value: '100%', title: '% load', icon: NumberText, iconOptions: { number: '100' }, desc: 'load testing', price: 5000 }, - { value: '120%', title: '% load', icon: NumberText, iconOptions: { number: '120' }, desc: 'stress testing', price: 7000 } + { value: 'upto-5', title: 'Upto 5'}, + { value: 'upto-10', title: 'Upto 10' }, + { value: 'upto-25', title: 'Upto 25' }, + { value: 'above-25', title: 'More than 25' } ], required: true, - validationError: 'Please provide expected load' + validationError: 'Please provide expected number of business processes' }, { icon: 'question', - title: 'Testing add-on packs', - description: 'Please select all that apply. These addons provide a way to expand the testing parameters.', - type: 'checkbox-group', + title: 'What is the expected hours of execution for all different Performance Tests to be conducted?', + description: '(Unit package covers 10 hours of execution, additional execution time would require Top-Ups)', + fieldName: 'details.loadDetails.expectedExecutionHours', + type: 'slide-radiogroup', options: [ - { value: 'scenario', label: 'Scenario Booster - 3 additional testing scenarios ($1,000)' }, - { value: '250vusers', label: 'Add 250 vUsers ($1,000)' }, - { value: '2500vusers', label: 'Add 2500 vUsers ($4,000)' }, - { value: 'geo', label: 'Add additional Geography ($1,500)' }, - { value: 'poc', label: 'Precurser to purchase - 1 Tool, 2 scripts,1 hour execution ($2,500)' }, - { value: 'strategy', label: 'Utilize consultant to tailor strategy ($3,000)' }, - { value: 'execution', label: 'Execution Booster extra 2 hours ($500)' }, - { value: 'mytool', label: 'Use my own testing tool ($2,500)' }, - { value: 'myscripts', label: 'Modify/Use own scripts ($5,000)' }, - { value: 'late', label: 'Late Entry - 1 week lead time ($2,000)' } + { value: 'upto-5', title: 'Upto 5'}, + { value: 'upto-10', title: 'Upto 10' }, + { value: 'upto-25', title: 'Upto 25' }, + { value: 'above-25', title: 'More than 25' } ], - fieldName: 'details.testingNeeds.addons' + required: true, + validationError: 'Please provide expected hours of execution' } ] }, @@ -460,9 +630,9 @@ export const basicSections = [ id: 'notes', fieldName: 'details.appDefinition.notes', title: 'Notes', - description: 'Please add details of any critical business processes \ - such as peak hour user load, transaction count in peak hours, \ - SLA (in seconds).', + description: 'Please enter any additional information like requirements,\ + architecture details, tools, performance baseline, etc.\ + After creating your project you will be able to upload files.', type: 'notes' } ] diff --git a/src/projects/detail/components/ProjectSpecSidebar.jsx b/src/projects/detail/components/ProjectSpecSidebar.jsx index 82df5ceaa..4affb6865 100644 --- a/src/projects/detail/components/ProjectSpecSidebar.jsx +++ b/src/projects/detail/components/ProjectSpecSidebar.jsx @@ -21,7 +21,11 @@ const calcProgress = (project, subSection) => { }) let count = 0 _.forEach(vals, (v) => {if (v) count++ }) - return [count, subSection.questions.length] + // Github issue#1399, filtered only required questions to set expected length of valid answers + const filterRequiredQuestions = (q) => ( + q.required || (q.validations && q.validations.indexOf('isRequired') !== -1) + ) + return [count, _.filter(subSection.questions, filterRequiredQuestions).length] } else if (subSection.id === 'screens') { const screens = _.get(project, 'details.appScreens.screens', []) const validScreens = screens.filter((s) => { diff --git a/src/projects/detail/components/SidebarNav.jsx b/src/projects/detail/components/SidebarNav.jsx index 3b66ffefe..aeb8e53b6 100644 --- a/src/projects/detail/components/SidebarNav.jsx +++ b/src/projects/detail/components/SidebarNav.jsx @@ -21,7 +21,8 @@ const scrollProps = { */ const renderSubNavItems = (child, idx) => { const { name, progress, link, required } = child - const isComplete = progress.length && progress[0] === progress[1] + // Github issue#1399, changed === to >= to determine if all required fields are completed + const isComplete = progress.length && progress[0] >= progress[1] const showProgress = progress[1] > 0 && name.toLowerCase().indexOf('questions') !== -1 return (
  • From 22e289bb83dee100443add27b1d322165de003fd Mon Sep 17 00:00:00 2001 From: Vikas Agarwal Date: Mon, 4 Dec 2017 16:45:03 +0530 Subject: [PATCH 7/8] lint fixes --- .../performance_testing.v1.0.js | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/config/projectQuestions/performance_testing.v1.0.js b/src/config/projectQuestions/performance_testing.v1.0.js index 172f2e7d5..14a56e43d 100644 --- a/src/config/projectQuestions/performance_testing.v1.0.js +++ b/src/config/projectQuestions/performance_testing.v1.0.js @@ -1,5 +1,5 @@ import _ from 'lodash' -import NumberText from '../../components/NumberText/NumberText' +// import NumberText from '../../components/NumberText/NumberText' import { findProduct } from '../projectWizard' @@ -264,7 +264,7 @@ const sections = [ { value: 'adobe-flex', label: 'Adobe Flex' }, { value: 'others', label: 'Others' } ], - fieldName: 'details.targetApplication.developmentPlatform', + fieldName: 'details.targetApplication.developmentPlatform' // required: true, // validationError: 'Please provide development platform of the application' }, @@ -282,7 +282,7 @@ const sections = [ { value: 'java', label: 'Java based (with Swing/Applets)' }, { value: 'oracle-forms', label: 'Web based Oracle Forms' }, { value: 'other', label: 'Any other' } - ], + ] // required: true, // validationError: 'Please provide front end used in the application' }, @@ -291,7 +291,7 @@ const sections = [ title: 'What are the web servers used?', description: '(For eg. Webserver can be Apache, IIS etc.)', fieldName: 'details.targetApplication.webBrowsers', - type: 'textbox', + type: 'textbox' // required: true, // validationError: 'Please provide target web browsers' }, @@ -300,7 +300,7 @@ const sections = [ title: 'What ae the application servers used?', description: '(For eg. Application server can be JBoss or Weblogic or Websphere etc.)', fieldName: 'details.targetApplication.appServers', - type: 'textbox', + type: 'textbox' // required: true, // validationError: 'Please provide application servers used' }, @@ -309,7 +309,7 @@ const sections = [ title: 'What is the back end of your application?', description: '(For eg. Back end can be Oracle, MS SQL or Sybase etc)', fieldName: 'details.targetApplication.backEnd', - type: 'textbox', + type: 'textbox' // required: true, // validationError: 'Please provide back end used in the application' }, @@ -325,7 +325,7 @@ const sections = [ title: 'What is the middleware used?', description: '(For eg. Middleware can be MQSeries or TIBCO or Webmethod etc)', fieldName: 'details.targetApplication.middleware', - type: 'textbox', + type: 'textbox' // required: true, // validationError: 'Please provide middleware used in the application' }, @@ -334,7 +334,7 @@ const sections = [ title: 'Please specify if web services are used and their functions', description: '(For eg. SOAP/REST Webservices deployed in App server for new customer creation and maintenance)', fieldName: 'details.targetApplication.webservices', - type: 'textbox', + type: 'textbox' // required: true, // validationError: 'Please provide web services used in the application' }, @@ -350,7 +350,7 @@ const sections = [ { value: 'sso', label: 'Siteminder/SSO' }, { value: 'ldap', label: 'LDAP' }, { value: 'others', label: 'Others' } - ], + ] // required: true, // validationError: 'Please provide authentication mode of the application' }, @@ -366,7 +366,7 @@ const sections = [ { value: 'document-mgmt-system', label: 'Document Mgmt System' }, { value: 'payments', label: 'Payments' }, { value: 'other', label: 'Others' } - ], + ] // required: true, // validationError: 'Please provide interfaces used in the application' } From 2438f5d7c7b5852d97bda7c1720114b3fd31014f Mon Sep 17 00:00:00 2001 From: davemess34 Date: Mon, 4 Dec 2017 10:54:47 -0500 Subject: [PATCH 8/8] changed Upto to Up to, removed booster pricing, added SPOCs definition --- .../performance_testing.v1.0.js | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/config/projectQuestions/performance_testing.v1.0.js b/src/config/projectQuestions/performance_testing.v1.0.js index 14a56e43d..10c0045a2 100644 --- a/src/config/projectQuestions/performance_testing.v1.0.js +++ b/src/config/projectQuestions/performance_testing.v1.0.js @@ -65,9 +65,9 @@ const sections = [ description: '(Unit package includes 500 virtual users, additional load would require Top-Ups)', type: 'slide-radiogroup', options: [ - { value: 'upto-500', title: 'Upto 500' }, - { value: 'upto-1000', title: 'Upto 1000' }, - { value: 'upto-5000', title: 'Upto 5000' }, + { value: 'upto-500', title: 'Up to 500' }, + { value: 'upto-1000', title: 'Up to 1000' }, + { value: 'upto-5000', title: 'Up to 5000' }, { value: 'above-5000', title: 'More than 5000' } ], fieldName: 'details.loadDetails.concurrentUsersCount', @@ -81,9 +81,9 @@ const sections = [ fieldName: 'details.loadDetails.businessProcessesCount', type: 'slide-radiogroup', options: [ - { value: 'upto-5', title: 'Upto 5'}, - { value: 'upto-10', title: 'Upto 10' }, - { value: 'upto-25', title: 'Upto 25' }, + { value: 'upto-5', title: 'Up to 5'}, + { value: 'upto-10', title: 'Up to 10' }, + { value: 'upto-25', title: 'Up to 25' }, { value: 'above-25', title: 'More than 25' } ], required: true, @@ -96,9 +96,9 @@ const sections = [ fieldName: 'details.loadDetails.expectedExecutionHours', type: 'slide-radiogroup', options: [ - { value: 'upto-5', title: 'Upto 5'}, - { value: 'upto-10', title: 'Upto 10' }, - { value: 'upto-25', title: 'Upto 25' }, + { value: 'upto-5', title: 'Up to 5'}, + { value: 'upto-10', title: 'Up to 10' }, + { value: 'upto-25', title: 'Up to 25' }, { value: 'above-25', title: 'More than 25' } ], required: true, @@ -107,19 +107,19 @@ const sections = [ { icon: 'question', title: 'Please select any additional add-ons?', - description: 'estimated additional cost in ()', + description: '', type: 'checkbox-group', options: [ - { value: 'scenario', label: 'Scenario Booster add 3 more ($1,000)' }, - { value: '250vusers', label: 'Add 250 vUsers ($1,000)' }, - { value: '2500vusers', label: 'Add 2500 vUsers ($4,000)' }, - { value: 'geo', label: 'Add additional Geography($1,500)' }, - { value: 'poc', label: 'Precurser to purchase - 1 Tool, 2 scripts,1 hour execution ($2,500)' }, - { value: 'strategy', label: 'Utilize consultant to tailor strategy ($3,000)' }, - { value: 'execution', label: 'Execution Booster extra 2 hours ($500)' }, - { value: 'mytool', label: 'Use my own testing tool ($2,500)' }, - { value: 'myscripts', label: 'Modify/Use own scripts ($5,000)' }, - { value: 'late', label: 'Late Entry - 1 week lead time ($2,000)' } + { value: 'scenario', label: 'Scenario Booster add 3 more' }, + { value: '250vusers', label: 'Add 250 vUsers' }, + { value: '2500vusers', label: 'Add 2500 vUsers' }, + { value: 'geo', label: 'Add additional Geography' }, + { value: 'poc', label: 'Precurser to purchase - 1 Tool, 2 scripts,1 hour execution' }, + { value: 'strategy', label: 'Utilize consultant to tailor strategy' }, + { value: 'execution', label: 'Execution Booster extra 2 hours' }, + { value: 'mytool', label: 'Use my own testing tool' }, + { value: 'myscripts', label: 'Modify/Use own scripts' }, + { value: 'late', label: 'Late Entry - 1 week lead time' } ], required: false, fieldName: 'details.testingNeeds.addons' @@ -154,7 +154,7 @@ const sections = [ { id: 'spoc', required: false, - title: 'SPOCs', + title: 'SPOCs (Single Point of Contact)', description: '', type: 'questions', questions: [ @@ -255,7 +255,7 @@ const sections = [ description: '', type: 'checkbox-group', options: [ - { value: 'dotnet', label: '.Net' }, + { value: 'dotnet', label: '.NET' }, { value: 'j2ee', label: 'J2EE' }, { value: 'ria', label: 'Rich Internet Applications' }, { value: 'oracle', label: 'Oracle Technology' }, @@ -585,9 +585,9 @@ export const basicSections = [ description: '(Unit package includes 500 virtual users, additional load would require Top-Ups)', type: 'slide-radiogroup', options: [ - { value: 'upto-500', title: 'Upto 500' }, - { value: 'upto-1000', title: 'Upto 1000' }, - { value: 'upto-5000', title: 'Upto 5000' }, + { value: 'upto-500', title: 'Up to 500' }, + { value: 'upto-1000', title: 'Up to 1000' }, + { value: 'upto-5000', title: 'Up to 5000' }, { value: 'above-5000', title: 'More than 5000' } ], fieldName: 'details.loadDetails.concurrentUsersCount', @@ -601,9 +601,9 @@ export const basicSections = [ fieldName: 'details.loadDetails.businessProcessesCount', type: 'slide-radiogroup', options: [ - { value: 'upto-5', title: 'Upto 5'}, - { value: 'upto-10', title: 'Upto 10' }, - { value: 'upto-25', title: 'Upto 25' }, + { value: 'upto-5', title: 'Up to 5'}, + { value: 'upto-10', title: 'Up to 10' }, + { value: 'upto-25', title: 'Up to 25' }, { value: 'above-25', title: 'More than 25' } ], required: true, @@ -616,9 +616,9 @@ export const basicSections = [ fieldName: 'details.loadDetails.expectedExecutionHours', type: 'slide-radiogroup', options: [ - { value: 'upto-5', title: 'Upto 5'}, - { value: 'upto-10', title: 'Upto 10' }, - { value: 'upto-25', title: 'Upto 25' }, + { value: 'upto-5', title: 'Up to 5'}, + { value: 'upto-10', title: 'Up to 10' }, + { value: 'upto-25', title: 'Up to 25' }, { value: 'above-25', title: 'More than 25' } ], required: true,