diff --git a/src/assets/images/icon-crowd-testing.svg b/src/assets/images/icon-crowd-testing.svg
new file mode 100644
index 000000000..0b85098ad
--- /dev/null
+++ b/src/assets/images/icon-crowd-testing.svg
@@ -0,0 +1,27 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-dont-know.svg b/src/assets/images/icon-dont-know.svg
new file mode 100644
index 000000000..3d722b3fb
--- /dev/null
+++ b/src/assets/images/icon-dont-know.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-mobility-testing.svg b/src/assets/images/icon-mobility-testing.svg
new file mode 100644
index 000000000..190b823d1
--- /dev/null
+++ b/src/assets/images/icon-mobility-testing.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-platform-lg.svg b/src/assets/images/icon-platform-lg.svg
new file mode 100644
index 000000000..8895df88d
--- /dev/null
+++ b/src/assets/images/icon-platform-lg.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-platform-md.svg b/src/assets/images/icon-platform-md.svg
new file mode 100644
index 000000000..3b5187999
--- /dev/null
+++ b/src/assets/images/icon-platform-md.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-platform-sm.svg b/src/assets/images/icon-platform-sm.svg
new file mode 100644
index 000000000..10b90bf93
--- /dev/null
+++ b/src/assets/images/icon-platform-sm.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-test-structured.svg b/src/assets/images/icon-test-structured.svg
new file mode 100644
index 000000000..54cd66f9f
--- /dev/null
+++ b/src/assets/images/icon-test-structured.svg
@@ -0,0 +1,22 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-test-unstructured.svg b/src/assets/images/icon-test-unstructured.svg
new file mode 100644
index 000000000..460a18729
--- /dev/null
+++ b/src/assets/images/icon-test-unstructured.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/src/assets/images/icon-website-performance.svg b/src/assets/images/icon-website-performance.svg
new file mode 100644
index 000000000..e34bc9485
--- /dev/null
+++ b/src/assets/images/icon-website-performance.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/src/config/projectQuestions/crowd_testing.v1.0.js b/src/config/projectQuestions/crowd_testing.v1.0.js
new file mode 100644
index 000000000..03b879562
--- /dev/null
+++ b/src/config/projectQuestions/crowd_testing.v1.0.js
@@ -0,0 +1,362 @@
+import _ from 'lodash'
+import { Icons } from 'appirio-tech-react-components'
+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
+ }
+ 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: [
+ {
+ icon: 'question',
+ required: true,
+ validationError: 'Please let us know what kind of testing you would like to execute',
+ title: 'What kind of crowd testing are you interested in?',
+ description: 'Structured testing focuses on the execution of test cases, whereas unstructured testing lets the testers create their own path through an application as an end user might.',
+ fieldName: 'details.appDefinition.testType',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'unstructured', title: 'Unstructured', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'structured', title: 'Structured', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'dontKnow', title: 'Do not know', icon: 'icon-dont-know', iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ icon: 'question',
+ required: true,
+ validationError: 'Please let us know the expected hours',
+ title: 'Approximately how many hours of crowd testing are you \
+ looking for your app?',
+ description: 'If you know roughly the amount of time you want spent \
+ testing the application please list it here. If you do \
+ not know how many hours you require your copilot can \
+ assist you.',
+ fieldName: 'details.appDefinition.expectedHours',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upto100', title: 'hours', icon: NumberText, iconOptions: { number: '100' }, desc: 'or fewer'},
+ {value: 'upTo250', title: 'hours', icon: NumberText, iconOptions: { number: '250' }, desc: 'or fewer'},
+ {value: 'upTo500', title: 'hours', icon: NumberText, iconOptions: { number: '500' }, desc: 'or fewer'},
+ {value: 'dontKnow', title: 'Do not know', icon: 'icon-dont-know', iconOptions: { fill: '#00000'}, desc: 'or not applicable'}
+ ]
+ },
+ {
+ icon: 'question',
+ title: 'In which geographies would you like to test?',
+ description: '',
+ type: 'checkbox-group',
+ options: [
+ {value: 'africa', label: 'Africa'},
+ {value: 'asia', label: 'Asia'},
+ {value: 'australia', label: 'Australia'},
+ {value: 'europe', label: 'Europe'},
+ {value: 'northAmerica', label: 'North America'},
+ {value: 'southAmerica', label: 'South America'}
+ ],
+ fieldName: 'details.appDefinition.geographies'
+ },
+ {
+ icon: 'question',
+ title: 'Approximately how many platform/device - browser configurations to be tested?',
+ description: '',
+ fieldName: 'details.appDefinition.browserConfigurations',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upto5', title: 'configurations', icon: NumberText, iconOptions: { number: '5' }, desc: 'or fewer'},
+ {value: 'upTo10', title: 'configurations', icon: NumberText, iconOptions: { number: '10' }, desc: 'or fewer'},
+ {value: 'upTo20', title: 'configurations', icon: NumberText, iconOptions: { number: '20' }, desc: 'or fewer'},
+ {value: 'dontKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'We will find the best fit for you.'}
+ ]
+ }
+ ]
+ },
+ {
+ id: 'notes',
+ fieldName: 'details.appDefinition.notes',
+ title: 'Notes',
+ description: 'Please enter any additional information like \
+ requirements and/or test cases. After creating \
+ your project you will be able to upload files.',
+ type: 'notes'
+ }
+ ]
+ },
+ {
+ id: 'testingNeeds',
+ required: false,
+ title: 'Testing Needs',
+ description: 'Please answer these additional questions to better help us understand your needs.',
+ subSections: [
+ {
+ id: 'scope',
+ required: false,
+ title: 'Scope',
+ description: '',
+ type: 'questions',
+ questions: [
+ {
+ icon: 'question',
+ id: 'testingNeeds.description',
+ fieldName: 'description',
+ description: '',
+ title: 'Please describe your website and/or application.',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ id: 'testingNeeds.inScope',
+ fieldName: 'In Scope',
+ description: '',
+ title: 'Please describe which features or components are in-scope in this testing effort.',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ id: 'testingNeeds.outOfScope',
+ fieldName: 'Out of Scope',
+ description: '',
+ title: 'Are any features or components out of scope? If yes, please describe.',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ id: 'testingNeeds.duration',
+ fieldName: 'Duration',
+ description: '',
+ title: 'Do you have a specific timeline for testing? If so, please provide approximate start and end dates.',
+ type: 'textbox'
+ }
+ ]
+ },
+ {
+ id: 'notes',
+ required: false,
+ fieldName: 'details.testingNeeds.notes',
+ title: 'Notes',
+ description: 'Please log any other notes or comments related to scope here.',
+ type: 'notes'
+ }
+ ]
+ }/*,
+ {
+ id: 'devSpecification',
+ title: 'Development Specification',
+ description: 'Define some basic technical requirements for your application or provide any architecture or technical guidelines. Skip this section if you dont know what is required.',
+ required: false,
+ subSections: [
+ {
+ id: 'questions',
+ required: false,
+ title: 'Questions',
+ description: '',
+ type: 'questions',
+ questions: [
+ {
+ icon: 'question',
+ title: 'How should your application be built?',
+ description: 'Choose the operating system/platform for your application',
+ type: 'checkbox-group',
+ options: [
+ {value: 'ios', label: 'iOS'},
+ {value: 'android', label: 'Android'},
+ {value: 'web', label: 'Web'},
+ {value: 'hybrid', label: 'Hybrid'}
+ ],
+ fieldName: 'details.devSpecification.platform'
+ },
+ {
+ icon: 'question',
+ title: 'Is offline access required for your application?',
+ description: 'Do your users need to use the application when they are unable to connect to the internet?',
+ type: 'radio-group',
+ options: [
+ {value: 'true', label: 'Yes'},
+ {value: 'false', label: 'No'}
+ ],
+ fieldName: 'details.devSpecification.offlineAccess'
+ },
+ {
+ icon: 'question',
+ title: 'What level of security is needed for your application?',
+ description: 'Do you expect to be storing or transmitting personal or sensitive information?',
+ type: 'radio-group',
+ options: [
+ {value: 'standard', label: 'Standard - Nothing to do here'},
+ {value: 'enhanced', label: 'Enhanced'},
+ {value: 'maximumm', label: 'Maximum'}
+ ],
+ fieldName: 'details.devSpecification.securityLevel'
+ }
+ ]
+ },
+ {
+ id: 'notes',
+ required: false,
+ fieldName: 'details.devSpecification.notes',
+ title: 'Notes',
+ description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timeing constraints)',
+ type: 'notes'
+ }
+ ]
+ }*/
+]
+
+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: [
+ {
+ icon: 'question',
+ required: true,
+ validationError: 'Please let us know what kind of testing you would like to execute',
+ title: 'What kind of crowd testing are you interested in?',
+ description: 'Structured testing focuses on the execution of test cases, whereas unstructured testing lets the testers create their own path through an application as an end user might.',
+ fieldName: 'details.appDefinition.testType',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'unstructured', title: 'Unstructured', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'structured', title: 'Structured', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'dontKnow', title: 'Do not know', icon: 'icon-dont-know', iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ icon: 'question',
+ required: true,
+ validationError: 'Please let us know the expected hours',
+ title: 'Approximately how many hours of crowd testing are you \
+ looking for your app?',
+ description: 'If you know roughly the amount of time you want spent \
+ testing the application please list it here. If you do \
+ not know how many hours you require your copilot can \
+ assist you.',
+ fieldName: 'details.appDefinition.expectedHours',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upto100', title: 'hours', icon: NumberText, iconOptions: { number: '100' }, desc: 'or fewer'},
+ {value: 'upTo250', title: 'hours', icon: NumberText, iconOptions: { number: '250' }, desc: 'or fewer'},
+ {value: 'upTo500', title: 'hours', icon: NumberText, iconOptions: { number: '500' }, desc: 'or fewer'},
+ {value: 'dontKnow', title: 'Do not know', icon: 'icon-dont-know', iconOptions: { fill: '#00000'}, desc: 'or not applicable'}
+ ]
+ },
+ {
+ icon: 'question',
+ title: 'In which geographies would you like to test?',
+ description: '',
+ type: 'checkbox-group',
+ options: [
+ {value: 'africa', label: 'Africa'},
+ {value: 'asia', label: 'Asia'},
+ {value: 'australia', label: 'Australia'},
+ {value: 'europe', label: 'Europe'},
+ {value: 'northAmerica', label: 'North America'},
+ {value: 'southAmerica', label: 'South America'}
+ ],
+ fieldName: 'details.appDefinition.geographies'
+ },
+ {
+ icon: 'question',
+ title: 'Approximately how many platform/device - browser configurations to be tested?',
+ description: '',
+ fieldName: 'details.appDefinition.browserConfigurations',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upto5', title: 'configurations', icon: NumberText, iconOptions: { number: '5' }, desc: 'or fewer'},
+ {value: 'upTo10', title: 'configurations', icon: NumberText, iconOptions: { number: '10' }, desc: 'or fewer'},
+ {value: 'upTo20', title: 'configurations', icon: NumberText, iconOptions: { number: '20' }, desc: 'or fewer'},
+ {value: 'dontKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: 'We will find the best fit for you.'}
+ ]
+ }
+ /*{
+ id: 'projectInfo',
+ required: true,
+ validationError: 'Please provide any user accounts \
+ or passwords to access the acount',
+ fieldName: 'description',
+ description: 'Please provide any user accounts \
+ or passwords to access the acount',
+ title: 'Access Information',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ required: true,
+ validationError: 'Please let us know users of your application',
+ title: 'Who are the users of your application? ',
+ description: 'Describe the roles and needs of your target users',
+ type: 'textbox',
+ fieldName: 'details.appDefinition.users.value'
+ }*/
+ ]
+ },
+ {
+ id: 'notes',
+ fieldName: 'details.appDefinition.notes',
+ title: 'Notes',
+ description: 'Please enter any additional information like \
+ requirements and/or test cases. After creating \
+ your project you will be able to upload files.',
+ type: 'notes'
+ }
+ ]
+ }
+]
diff --git a/src/config/projectSpecification/typeToSpecification.json b/src/config/projectSpecification/typeToSpecification.json
index 832520070..36e2f1e8a 100644
--- a/src/config/projectSpecification/typeToSpecification.json
+++ b/src/config/projectSpecification/typeToSpecification.json
@@ -8,5 +8,8 @@
"website_development": "app_dev.v1.0",
"application_development": "app_dev.v1.0",
"watson_chatbot": "ibm_chatbot.v1.0",
- "generic_dev": "app_dev.v1.0"
+ "generic_dev": "app_dev.v1.0",
+ "crowd_testing": "crowd_testing.v1.0",
+ "mobility_testing": "app_dev.v1.0",
+ "website_performance": "performance_testing.v1.0"
}
diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js
index f6e97c501..d431e11aa 100644
--- a/src/config/projectWizard/index.js
+++ b/src/config/projectWizard/index.js
@@ -78,7 +78,28 @@ const products = {
details: 'Get help with any part of your development cycle',
icon: 'product-software-development',
id: 'generic_dev'
- }
+ },
+ 'Crowd Testing': {
+ brief: 'TBD',
+ details: 'Exploratory Testing, Cross browser-device Testing',
+ icon: 'icon-crowd-testing',
+ id: 'crowd_testing',
+ hidden: true
+ },
+ 'Mobility Testing': {
+ brief: 'TBD',
+ details: 'App Certification, Lab on Hire, User Sentiment Analysis',
+ icon: 'icon-mobility-testing',
+ id: 'mobility_testing',
+ hidden: true
+ },
+ 'Website Performance': {
+ brief: 'TBD',
+ details: 'Webpage rendering effiency, Load, Stress and Endurance Test',
+ icon: 'icon-website-performance',
+ id: 'website_performance',
+ hidden: true
+ }
}
}
}
@@ -145,4 +166,4 @@ export function getProjectCreationTemplateField(product, sectionId, subSectionId
return subSection.fieldName === fieldName ? subSection : null
}
return null
- }
\ No newline at end of file
+ }
diff --git a/temp-json/basicSections.json b/temp-json/basicSections.json
new file mode 100644
index 000000000..a2b557ec1
--- /dev/null
+++ b/temp-json/basicSections.json
@@ -0,0 +1,93 @@
+{
+ id: 'appDefinition',
+ title: (project, showProduct) => {
+ const product = _.get(project, 'details.products[0]')
+ if (showProduct && product) {
+ const prd = findProduct(product)
+ if (prd) return prd
+ }
+ 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: [
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.testingHours',
+ type: 'tiled-radio-group',
+ dependent: true,
+ depends-on: 'details.appDefinition.testingGeographies'
+ depends-response: [africa, australia]
+ options: [
+ {value: 'upTo100', title: 'Up to 100', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo250', title: 'Up to 250', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo500', title: 'Up to 500', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'projectInfo',
+ required: true,
+ fieldName: 'description',
+ description: 'Please describe your business needs.',
+ title: 'Description',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ title: 'In what geographies would you like to test?',
+ description: 'Please select the regions from which you would like testers to participate.',
+ type: 'checkbox-group',
+ options: [
+ {value: 'africa', label: 'Africa'},
+ {value: 'asia', label: 'Asia'},
+ {value: 'australia', label: 'Australia'},
+ {value: 'europe', label: 'Europe'},
+ {value: 'northAmerica', label: 'North America'},
+ {value: 'southAmerica', label: 'South America'}
+ ],
+ fieldName: 'details.appDefinition.testingGeographies'
+ },
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.primaryTarget',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upTo5', title: 'Up to 5', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo10', title: 'Up to 10', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo20', title: 'Up to 20', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'notes',
+ fieldName: 'details.appDefinition.notes',
+ title: 'Notes',
+ description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timing constraints)',
+ type: 'notes'
+ }
+ ]
+ }
+ ]
+ }
diff --git a/temp-json/will_crowd_testing.v1.0.js b/temp-json/will_crowd_testing.v1.0.js
new file mode 100644
index 000000000..a709c65cc
--- /dev/null
+++ b/temp-json/will_crowd_testing.v1.0.js
@@ -0,0 +1,213 @@
+import _ from 'lodash'
+import { Icons } from 'appirio-tech-react-components'
+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
+ }
+ 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: [
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.testingHours',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upTo100', title: 'Up to 100', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo250', title: 'Up to 250', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo500', title: 'Up to 500', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'projectInfo',
+ required: true,
+ fieldName: 'description',
+ description: 'Please describe your business needs.',
+ title: 'Description',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ title: 'In what geographies would you like to test?',
+ description: 'Please select the regions from which you would like testers to participate.',
+ type: 'checkbox-group',
+ options: [
+ {value: 'africa', label: 'Africa'},
+ {value: 'asia', label: 'Asia'},
+ {value: 'australia', label: 'Australia'},
+ {value: 'europe', label: 'Europe'},
+ {value: 'northAmerica', label: 'North America'},
+ {value: 'southAmerica', label: 'South America'}
+ ],
+ fieldName: 'details.appDefinition.testingGeographies'
+ },
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.primaryTarget',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upTo5', title: 'Up to 5', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo10', title: 'Up to 10', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo20', title: 'Up to 20', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'notes',
+ fieldName: 'details.appDefinition.notes',
+ title: 'Notes',
+ description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timing constraints)',
+ type: 'notes'
+ },
+ {
+ 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: (project, showProduct) => {
+ const product = _.get(project, 'details.products[0]')
+ if (showProduct && product) {
+ const prd = findProduct(product)
+ if (prd) return prd
+ }
+ 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: [
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.testingHours',
+ type: 'tiled-radio-group',
+ dependent: true,
+ depends-on: 'details.appDefinition.testingGeographies'
+ depends-response: [africa, australia]
+ options: [
+ {value: 'upTo100', title: 'Up to 100', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo250', title: 'Up to 250', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo500', title: 'Up to 500', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'projectInfo',
+ required: true,
+ fieldName: 'description',
+ description: 'Please describe your business needs.',
+ title: 'Description',
+ type: 'textbox'
+ },
+ {
+ icon: 'question',
+ title: 'In what geographies would you like to test?',
+ description: 'Please select the regions from which you would like testers to participate.',
+ type: 'checkbox-group',
+ options: [
+ {value: 'africa', label: 'Africa'},
+ {value: 'asia', label: 'Asia'},
+ {value: 'australia', label: 'Australia'},
+ {value: 'europe', label: 'Europe'},
+ {value: 'northAmerica', label: 'North America'},
+ {value: 'southAmerica', label: 'South America'}
+ ],
+ fieldName: 'details.appDefinition.testingGeographies'
+ },
+ {
+ icon: 'question',
+ title: 'Approximately how many hours of crowd testing are you looking for?',
+ description: 'If you know roughly the amount of time you want spent testing the application please list it here. If you do not know how many hours you require your copilot can assist you.',
+ fieldName: 'details.appDefinition.primaryTarget',
+ type: 'tiled-radio-group',
+ options: [
+ {value: 'upTo5', title: 'Up to 5', icon: Icons.IconTechOutlineMobile, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo10', title: 'Up to 10', icon: Icons.IconTechOutlineTablet, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'upTo20', title: 'Up to 20', icon: Icons.IconTechOutlineDesktop, iconOptions: { fill: '#00000'}, desc: ''},
+ {value: 'doNotKnow', title: 'Do not know', icon: Icons.IconTechOutlineWatchApple, iconOptions: { fill: '#00000'}, desc: ''}
+ ]
+ },
+ {
+ id: 'notes',
+ fieldName: 'details.appDefinition.notes',
+ title: 'Notes',
+ description: 'Add any other important information regarding your project (e.g., links to documents or existing applications, budget or timing constraints)',
+ type: 'notes'
+ }
+ ]
+ }
+ ]
+ }
+]