fraim-framework 2.0.55 → 2.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/registry/ai-manager-rules/customer-development-phases/phase1-customer-profiling.md +101 -0
- package/dist/registry/ai-manager-rules/customer-development-phases/phase2-platform-discovery.md +235 -0
- package/dist/registry/ai-manager-rules/customer-development-phases/phase3-prospect-qualification.md +243 -0
- package/dist/registry/ai-manager-rules/customer-development-phases/phase4-inventory-compilation.md +206 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase1-survey-scoping.md +60 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase2-survey-build-linkedin.md +23 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase3-survey-build-reddit.md +22 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase4-survey-build-x.md +21 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase5-survey-build-facebook.md +19 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase6-survey-build-custom.md +15 -0
- package/dist/registry/ai-manager-rules/user-survey-phases/phase7-survey-dispatch.md +45 -0
- package/dist/registry/templates/bootstrap/ARCHITECTURE-TEMPLATE.md +53 -0
- package/dist/registry/templates/bootstrap/CODE-QUALITY-REPORT-TEMPLATE.md +37 -0
- package/dist/registry/templates/bootstrap/TEST-COVERAGE-REPORT-TEMPLATE.md +35 -0
- package/dist/registry/templates/business-development/IDEATION-REPORT-TEMPLATE.md +29 -0
- package/dist/registry/templates/business-development/PRICING-STRATEGY-TEMPLATE.md +126 -0
- package/dist/registry/templates/customer-development/customer-interview-template.md +99 -0
- package/dist/registry/templates/customer-development/customer-persona-template.md +69 -0
- package/dist/registry/templates/customer-development/follow-up-email-templates.md +132 -0
- package/dist/registry/templates/customer-development/insight-analysis-template.md +74 -0
- package/dist/registry/templates/customer-development/prospect-inventory-template.csv +3 -0
- package/dist/registry/templates/customer-development/search-strategy-template.md +123 -0
- package/dist/registry/templates/customer-development/strategic-recommendations-template.md +53 -0
- package/dist/registry/templates/customer-development/thank-you-email-template.html +124 -0
- package/dist/registry/templates/customer-development/thank-you-note-template.md +16 -0
- package/dist/registry/templates/customer-development/triage-log-template.md +278 -0
- package/dist/registry/templates/customer-development/weekly-newsletter-template.html +204 -0
- package/dist/registry/templates/evidence/Design-Evidence.md +30 -0
- package/dist/registry/templates/evidence/Implementation-BugEvidence.md +94 -0
- package/dist/registry/templates/evidence/Implementation-FeatureEvidence.md +129 -0
- package/dist/registry/templates/evidence/Spec-Evidence.md +19 -0
- package/dist/registry/templates/help/HelpNeeded.md +14 -0
- package/dist/registry/templates/legal/NDA-TEMPLATE.md +170 -0
- package/dist/registry/templates/legal/PATENT-TEMPLATE.md +372 -0
- package/dist/registry/templates/legal/TRADEMARK-TEMPLATE.md +339 -0
- package/dist/registry/templates/legal/contract-review-checklist.md +193 -0
- package/dist/registry/templates/legal/review-report-template.md +198 -0
- package/dist/registry/templates/legal/saas-terms-template.md +174 -0
- package/dist/registry/templates/legal/sow-template.md +117 -0
- package/dist/registry/templates/legal/template-variables.md +131 -0
- package/dist/registry/templates/marketing/DOMAIN-REGISTRATION-TEMPLATE.md +194 -0
- package/dist/registry/templates/marketing/HBR-ARTICLE-TEMPLATE.md +66 -0
- package/dist/registry/templates/marketing/STORYTELLING-TEMPLATE.md +130 -0
- package/dist/registry/templates/marketing/WEBSITE-TEMPLATE.md +262 -0
- package/dist/registry/templates/marketing/github-pages-workflow.yml +64 -0
- package/dist/registry/templates/replicate/implementation-checklist.md +39 -0
- package/dist/registry/templates/replicate/use-cases-template.md +88 -0
- package/dist/registry/templates/retrospective/RETROSPECTIVE-TEMPLATE.md +55 -0
- package/dist/registry/templates/specs/BUGSPEC-TEMPLATE.md +37 -0
- package/dist/registry/templates/specs/FEATURESPEC-TEMPLATE.md +66 -0
- package/dist/registry/templates/specs/TECHSPEC-TEMPLATE.md +39 -0
- package/dist/registry/workflows/bootstrap/create-architecture.md +38 -0
- package/dist/registry/workflows/bootstrap/detect-broken-windows.md +300 -0
- package/dist/registry/workflows/bootstrap/evaluate-code-quality.md +35 -0
- package/dist/registry/workflows/bootstrap/verify-test-coverage.md +36 -0
- package/dist/registry/workflows/brainstorming/blue-sky-brainstorming.md +211 -0
- package/dist/registry/workflows/brainstorming/codebase-brainstorming.md +165 -0
- package/dist/registry/workflows/business-development/create-business-plan.md +737 -0
- package/dist/registry/workflows/business-development/ideate-business-opportunity.md +55 -0
- package/dist/registry/workflows/business-development/price-product.md +325 -0
- package/dist/registry/workflows/compliance/detect-compliance-requirements.md +78 -0
- package/dist/registry/workflows/compliance/generate-audit-evidence.md +75 -0
- package/dist/registry/workflows/compliance/soc2-evidence-generator.md +332 -0
- package/dist/registry/workflows/customer-development/insight-analysis.md +156 -0
- package/dist/registry/workflows/customer-development/insight-triage.md +938 -0
- package/dist/registry/workflows/customer-development/interview-preparation.md +452 -0
- package/dist/registry/workflows/customer-development/linkedin-outreach.md +593 -0
- package/dist/registry/workflows/customer-development/strategic-brainstorming.md +146 -0
- package/dist/registry/workflows/customer-development/thank-customers.md +203 -0
- package/dist/registry/workflows/customer-development/user-survey-dispatch.md +60 -0
- package/dist/registry/workflows/customer-development/users-to-target.md +112 -0
- package/dist/registry/workflows/customer-development/weekly-newsletter.md +366 -0
- package/dist/registry/workflows/deploy/cloud-deployment.md +310 -0
- package/dist/registry/workflows/improve-fraim/contribute.md +32 -0
- package/dist/registry/workflows/improve-fraim/file-issue.md +32 -0
- package/dist/registry/workflows/learning/build-skillset.md +212 -0
- package/dist/registry/workflows/learning/synthesize-learnings.md +284 -0
- package/dist/registry/workflows/legal/contract-review-analysis.md +382 -0
- package/dist/registry/workflows/legal/nda.md +69 -0
- package/dist/registry/workflows/legal/patent-filing.md +76 -0
- package/dist/registry/workflows/legal/saas-contract-development.md +213 -0
- package/dist/registry/workflows/legal/trademark-filing.md +77 -0
- package/dist/registry/workflows/marketing/content-creation.md +37 -0
- package/dist/registry/workflows/marketing/convert-to-pdf.md +235 -0
- package/dist/registry/workflows/marketing/create-modern-website.md +456 -0
- package/dist/registry/workflows/marketing/domain-registration.md +323 -0
- package/dist/registry/workflows/marketing/hbr-article.md +73 -0
- package/dist/registry/workflows/marketing/launch-checklist.md +37 -0
- package/dist/registry/workflows/marketing/marketing-strategy.md +45 -0
- package/dist/registry/workflows/marketing/storytelling.md +65 -0
- package/dist/registry/workflows/performance/analyze-performance.md +65 -0
- package/dist/registry/workflows/product-building/design.md +103 -0
- package/dist/registry/workflows/product-building/implement.md +74 -0
- package/dist/registry/workflows/product-building/iterate-on-pr-comments.md +70 -0
- package/dist/registry/workflows/product-building/prep-issue.md +41 -0
- package/dist/registry/workflows/product-building/prototype.md +65 -0
- package/dist/registry/workflows/product-building/resolve.md +168 -0
- package/dist/registry/workflows/product-building/retrospect.md +86 -0
- package/dist/registry/workflows/product-building/spec.md +181 -0
- package/dist/registry/workflows/product-building/test.md +125 -0
- package/dist/registry/workflows/productivity-report/productivity-report.md +263 -0
- package/dist/registry/workflows/quality-assurance/browser-validation.md +221 -0
- package/dist/registry/workflows/quality-assurance/iterative-improvement-cycle.md +562 -0
- package/dist/registry/workflows/replicate/replicate-discovery.md +336 -0
- package/dist/registry/workflows/replicate/replicate-to-issues.md +324 -0
- package/dist/registry/workflows/reviewer/review-implementation-vs-design-spec.md +638 -0
- package/dist/registry/workflows/reviewer/review-implementation-vs-feature-spec.md +675 -0
- package/dist/registry/workflows/startup-credits/aws-activate-application.md +535 -0
- package/dist/registry/workflows/startup-credits/google-cloud-application.md +647 -0
- package/dist/registry/workflows/startup-credits/microsoft-azure-application.md +538 -0
- package/dist/src/ai-manager/ai-manager.js +4 -6
- package/dist/tests/test-users-to-target-workflow.js +2 -2
- package/package.json +1 -1
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase1-customer-profiling.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase1-survey-scoping.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase2-platform-discovery.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase2-survey-build-linkedin.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase3-prospect-qualification.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase3-survey-build-reddit.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase4-inventory-compilation.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase4-survey-build-x.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase5-survey-build-facebook.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase6-survey-build-custom.md +0 -11
- package/registry/stubs/workflows/customer-development/ai-coach-phases/phase7-survey-dispatch.md +0 -11
- package/registry/stubs/workflows/customer-development/templates/customer-persona-template.md +0 -11
- package/registry/stubs/workflows/customer-development/templates/search-strategy-template.md +0 -11
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
# AWS Activate Application Guide
|
|
2
|
+
|
|
3
|
+
**Complete step-by-step guide with Playwright automation instructions for applying to AWS Activate Credits.**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ⚠️ IMPORTANT: Collect User Information First
|
|
8
|
+
|
|
9
|
+
**Before starting automation, you MUST ask the user for the following information:**
|
|
10
|
+
|
|
11
|
+
- **Company Name**
|
|
12
|
+
- **Founder/Contact Name**
|
|
13
|
+
- **Email Address** (personal or business email)
|
|
14
|
+
- **Phone Number** (format: digits only, no dashes)
|
|
15
|
+
- **Company Website** (full URL)
|
|
16
|
+
- **Founded Date** (month and year)
|
|
17
|
+
- **City**
|
|
18
|
+
- **State/Province**
|
|
19
|
+
- **Zip/Postal Code**
|
|
20
|
+
- **Country** (e.g., "United States")
|
|
21
|
+
- **Industry** (e.g., "Technology", "Software & Internet")
|
|
22
|
+
- **Role** (e.g., "Entrepreneur", "Founder", "Co-Founder")
|
|
23
|
+
- **Application Path** (Founders for self-funded, or Portfolio if they have an Org ID)
|
|
24
|
+
|
|
25
|
+
**Store these values in variables and use them throughout the automation steps below.**
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Overview
|
|
30
|
+
|
|
31
|
+
**Program:** AWS Activate
|
|
32
|
+
**Credits:** $1,000 USD (Founders path) or up to $100,000 USD (Portfolio path)
|
|
33
|
+
**URL:** https://aws.amazon.com/startups/credits
|
|
34
|
+
**Processing Time:** 7-10 business days
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Prerequisites
|
|
39
|
+
|
|
40
|
+
### Required Information
|
|
41
|
+
- **Company Name:** [ASK USER]
|
|
42
|
+
- **Founder Name:** [ASK USER]
|
|
43
|
+
- **Email:** [ASK USER]
|
|
44
|
+
- **Phone:** [ASK USER] (format: digits only, no dashes)
|
|
45
|
+
- **Website:** [ASK USER] (full URL)
|
|
46
|
+
- **Founded:** [ASK USER] (month and year)
|
|
47
|
+
- **Location:** [ASK USER - City, State, Zip]
|
|
48
|
+
- **State:** [ASK USER]
|
|
49
|
+
- **Country:** [ASK USER]
|
|
50
|
+
- **Industry:** [ASK USER] (e.g., Technology / Software & Internet)
|
|
51
|
+
|
|
52
|
+
### Required Accounts
|
|
53
|
+
- AWS Builder ID (create if needed)
|
|
54
|
+
- AWS Account ID (optional, can create during application)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Playwright Automation Steps
|
|
59
|
+
|
|
60
|
+
### Step 1: Navigate to AWS Activate Credits Page
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
// Navigate to AWS Activate Credits page
|
|
64
|
+
await page.goto('https://aws.amazon.com/startups/credits');
|
|
65
|
+
await page.waitForTimeout(3000);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Expected Result:** Page loads showing AWS Activate information and "Apply now" button.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
### Step 2: Click "Apply now" Button
|
|
73
|
+
|
|
74
|
+
```javascript
|
|
75
|
+
// Click the "Apply now" button
|
|
76
|
+
await page.getByRole('button', { name: /apply now/i }).click();
|
|
77
|
+
await page.waitForTimeout(3000);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Expected Result:** Redirects to AWS sign-in page or application form.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### Step 3: Sign In with AWS Builder ID
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
// If redirected to sign-in, wait for user to sign in manually
|
|
88
|
+
// Or automate sign-in if credentials are available
|
|
89
|
+
await page.waitForURL(/aws.amazon.com|signin.aws.amazon.com/, { timeout: 30000 });
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Note:** User must sign in manually with AWS Builder ID. Wait for navigation to application form.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### Step 4: Select Application Path
|
|
97
|
+
|
|
98
|
+
**Option A: Activate Founders (Self-funded)**
|
|
99
|
+
```javascript
|
|
100
|
+
// Select "Activate Founders" path
|
|
101
|
+
await page.getByRole('radio', { name: /founders|self-funded/i }).click();
|
|
102
|
+
await page.waitForTimeout(1000);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Option B: Activate Portfolio (If you have Org ID)**
|
|
106
|
+
```javascript
|
|
107
|
+
// Select "Activate Portfolio" path
|
|
108
|
+
await page.getByRole('radio', { name: /portfolio|provider/i }).click();
|
|
109
|
+
await page.waitForTimeout(1000);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Expected Result:** Form fields appear based on selected path.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### Step 5: Fill Personal Information
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
// Use user-provided information - REPLACE WITH ACTUAL VALUES FROM USER
|
|
120
|
+
const firstName = '[USER_FIRST_NAME]'; // ASK USER
|
|
121
|
+
const lastName = '[USER_LAST_NAME]'; // ASK USER
|
|
122
|
+
const email = '[USER_EMAIL]'; // ASK USER
|
|
123
|
+
const phone = '[USER_PHONE]'; // ASK USER (digits only, no dashes)
|
|
124
|
+
|
|
125
|
+
// Fill first name
|
|
126
|
+
await page.getByRole('textbox', { name: /first name/i }).fill(firstName);
|
|
127
|
+
await page.waitForTimeout(500);
|
|
128
|
+
|
|
129
|
+
// Fill last name
|
|
130
|
+
await page.getByRole('textbox', { name: /last name/i }).fill(lastName);
|
|
131
|
+
await page.waitForTimeout(500);
|
|
132
|
+
|
|
133
|
+
// Fill email
|
|
134
|
+
await page.getByRole('textbox', { name: /email/i }).fill(email);
|
|
135
|
+
await page.waitForTimeout(500);
|
|
136
|
+
|
|
137
|
+
// Fill phone (format: digits only, no dashes)
|
|
138
|
+
await page.getByRole('textbox', { name: /phone/i }).fill(phone);
|
|
139
|
+
await page.waitForTimeout(500);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Expected Result:** All personal information fields are filled.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Step 6: Fill Company Information
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
// Use user-provided information - REPLACE WITH ACTUAL VALUES FROM USER
|
|
150
|
+
const companyName = '[USER_COMPANY_NAME]'; // ASK USER
|
|
151
|
+
const website = '[USER_WEBSITE]'; // ASK USER (full URL)
|
|
152
|
+
const city = '[USER_CITY]'; // ASK USER
|
|
153
|
+
const zipCode = '[USER_ZIP_CODE]'; // ASK USER
|
|
154
|
+
|
|
155
|
+
// Fill company name
|
|
156
|
+
await page.getByRole('textbox', { name: /company name/i }).fill(companyName);
|
|
157
|
+
await page.waitForTimeout(500);
|
|
158
|
+
|
|
159
|
+
// Fill company website
|
|
160
|
+
await page.getByRole('textbox', { name: /website|url/i }).fill(website);
|
|
161
|
+
await page.waitForTimeout(500);
|
|
162
|
+
|
|
163
|
+
// Fill city
|
|
164
|
+
await page.getByRole('textbox', { name: /city/i }).fill(city);
|
|
165
|
+
await page.waitForTimeout(500);
|
|
166
|
+
|
|
167
|
+
// Fill zip code
|
|
168
|
+
await page.getByRole('textbox', { name: /zip|postal/i }).fill(zipCode);
|
|
169
|
+
await page.waitForTimeout(500);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Expected Result:** Company information fields are filled.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### Step 7: Select Country (Dropdown)
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
// Use user-provided country - REPLACE WITH ACTUAL VALUE FROM USER
|
|
180
|
+
const country = '[USER_COUNTRY]'; // ASK USER (e.g., "United States")
|
|
181
|
+
|
|
182
|
+
// Click country dropdown
|
|
183
|
+
await page.getByRole('combobox', { name: /country/i }).click();
|
|
184
|
+
await page.waitForTimeout(1000);
|
|
185
|
+
|
|
186
|
+
// Type country name to search
|
|
187
|
+
await page.keyboard.type(country);
|
|
188
|
+
await page.waitForTimeout(1000);
|
|
189
|
+
|
|
190
|
+
// Select country from dropdown
|
|
191
|
+
await page.getByRole('option', { name: new RegExp(country, 'i') }).click();
|
|
192
|
+
await page.waitForTimeout(1000);
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Alternative Method (if typing doesn't work):**
|
|
196
|
+
```javascript
|
|
197
|
+
// Use evaluate to find and click the option
|
|
198
|
+
const country = '[USER_COUNTRY]'; // ASK USER
|
|
199
|
+
await page.evaluate((countryName) => {
|
|
200
|
+
const options = Array.from(document.querySelectorAll('[role="option"]'));
|
|
201
|
+
const countryOption = options.find(opt =>
|
|
202
|
+
opt.textContent.toLowerCase().includes(countryName.toLowerCase())
|
|
203
|
+
);
|
|
204
|
+
if (countryOption) countryOption.click();
|
|
205
|
+
}, country);
|
|
206
|
+
await page.waitForTimeout(1000);
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Expected Result:** Country is selected.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### Step 8: Select State/Province (Dropdown)
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
216
|
+
// Use user-provided state - REPLACE WITH ACTUAL VALUE FROM USER
|
|
217
|
+
const state = '[USER_STATE]'; // ASK USER (e.g., "Washington" or "WA")
|
|
218
|
+
|
|
219
|
+
// Click state dropdown
|
|
220
|
+
await page.getByRole('combobox', { name: /state|province/i }).click();
|
|
221
|
+
await page.waitForTimeout(1000);
|
|
222
|
+
|
|
223
|
+
// Type state name
|
|
224
|
+
await page.keyboard.type(state);
|
|
225
|
+
await page.waitForTimeout(1000);
|
|
226
|
+
|
|
227
|
+
// Select state from dropdown
|
|
228
|
+
await page.getByRole('option', { name: new RegExp(state, 'i') }).click();
|
|
229
|
+
await page.waitForTimeout(1000);
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Alternative Method:**
|
|
233
|
+
```javascript
|
|
234
|
+
// Scroll and click if needed
|
|
235
|
+
const state = '[USER_STATE]'; // ASK USER
|
|
236
|
+
await page.evaluate((stateName) => {
|
|
237
|
+
const options = Array.from(document.querySelectorAll('[role="option"]'));
|
|
238
|
+
const stateOption = options.find(opt =>
|
|
239
|
+
opt.textContent.match(new RegExp(stateName, 'i'))
|
|
240
|
+
);
|
|
241
|
+
if (stateOption) {
|
|
242
|
+
stateOption.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
243
|
+
setTimeout(() => stateOption.click(), 500);
|
|
244
|
+
}
|
|
245
|
+
}, state);
|
|
246
|
+
await page.waitForTimeout(1500);
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Expected Result:** State is selected.
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
### Step 9: Select Industry (Dropdown)
|
|
254
|
+
|
|
255
|
+
```javascript
|
|
256
|
+
// Use user-provided industry - REPLACE WITH ACTUAL VALUE FROM USER
|
|
257
|
+
const industry = '[USER_INDUSTRY]'; // ASK USER (e.g., "Technology", "Software & Internet")
|
|
258
|
+
|
|
259
|
+
// Click industry dropdown
|
|
260
|
+
await page.getByRole('combobox', { name: /industry/i }).click();
|
|
261
|
+
await page.waitForTimeout(1000);
|
|
262
|
+
|
|
263
|
+
// Type industry name
|
|
264
|
+
await page.keyboard.type(industry);
|
|
265
|
+
await page.waitForTimeout(1000);
|
|
266
|
+
|
|
267
|
+
// Select industry from dropdown
|
|
268
|
+
await page.getByRole('option', { name: new RegExp(industry, 'i') }).click();
|
|
269
|
+
await page.waitForTimeout(1000);
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Expected Result:** Industry is selected.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### Step 10: Select Role
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
// Use user-provided role - REPLACE WITH ACTUAL VALUE FROM USER
|
|
280
|
+
// Common options: "Entrepreneur", "Founder", "Co-Founder"
|
|
281
|
+
const role = '[USER_ROLE]'; // ASK USER
|
|
282
|
+
|
|
283
|
+
// Select role
|
|
284
|
+
await page.getByRole('radio', { name: new RegExp(role, 'i') }).click();
|
|
285
|
+
await page.waitForTimeout(500);
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Expected Result:** Role is selected.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
### Step 11: Fill Additional Fields (If Present)
|
|
293
|
+
|
|
294
|
+
```javascript
|
|
295
|
+
// Fill any additional required fields that appear
|
|
296
|
+
// Example: Business interest checkbox
|
|
297
|
+
const businessInterest = page.getByRole('checkbox', { name: /business interest/i });
|
|
298
|
+
if (await businessInterest.isVisible()) {
|
|
299
|
+
await businessInterest.check();
|
|
300
|
+
await page.waitForTimeout(500);
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
### Step 12: Handle Multi-Select Dropdowns (If Present)
|
|
307
|
+
|
|
308
|
+
**For "What are the top 3 ways AWS can help you?":**
|
|
309
|
+
```javascript
|
|
310
|
+
// Click the multi-select dropdown
|
|
311
|
+
await page.getByRole('combobox', { name: /ways AWS can help/i }).click();
|
|
312
|
+
await page.waitForTimeout(1000);
|
|
313
|
+
|
|
314
|
+
// Select first 3 options
|
|
315
|
+
const options = await page.locator('[role="option"]').all();
|
|
316
|
+
for (let i = 0; i < Math.min(3, options.length); i++) {
|
|
317
|
+
await options[i].click();
|
|
318
|
+
await page.waitForTimeout(500);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Close dropdown by clicking outside or pressing Escape
|
|
322
|
+
await page.keyboard.press('Escape');
|
|
323
|
+
await page.waitForTimeout(500);
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**For "Which AWS tech topics would you like to follow?":**
|
|
327
|
+
```javascript
|
|
328
|
+
// Click the multi-select dropdown
|
|
329
|
+
await page.getByRole('combobox', { name: /tech topics/i }).click();
|
|
330
|
+
await page.waitForTimeout(1000);
|
|
331
|
+
|
|
332
|
+
// Select 3-5 relevant options (e.g., AI/ML, Compute, Storage)
|
|
333
|
+
// ASK USER which topics they're interested in, or select common ones
|
|
334
|
+
const relevantTopics = ['AI', 'Machine Learning', 'Compute', 'Storage', 'Database'];
|
|
335
|
+
for (const topic of relevantTopics.slice(0, 3)) {
|
|
336
|
+
const option = page.getByRole('option', { name: new RegExp(topic, 'i') });
|
|
337
|
+
if (await option.isVisible()) {
|
|
338
|
+
await option.click();
|
|
339
|
+
await page.waitForTimeout(500);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
await page.keyboard.press('Escape');
|
|
344
|
+
await page.waitForTimeout(500);
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**For "What type of customers do you primarily serve?":**
|
|
348
|
+
```javascript
|
|
349
|
+
// Click the multi-select dropdown
|
|
350
|
+
await page.getByRole('combobox', { name: /customers|serve/i }).click();
|
|
351
|
+
await page.waitForTimeout(1000);
|
|
352
|
+
|
|
353
|
+
// ASK USER which customer types apply, or select relevant options
|
|
354
|
+
const customerTypes = ['Enterprise', 'SMB', 'Startups'];
|
|
355
|
+
for (const type of customerTypes.slice(0, 2)) {
|
|
356
|
+
const option = page.getByRole('option', { name: new RegExp(type, 'i') });
|
|
357
|
+
if (await option.isVisible()) {
|
|
358
|
+
await option.click();
|
|
359
|
+
await page.waitForTimeout(500);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
await page.keyboard.press('Escape');
|
|
364
|
+
await page.waitForTimeout(500);
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
### Step 13: Click "Save and Continue"
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
// Click save/continue button
|
|
373
|
+
await page.getByRole('button', { name: /save.*continue|continue|next/i }).click();
|
|
374
|
+
await page.waitForTimeout(3000);
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Expected Result:** Form validates and moves to next page or shows success message.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
### Step 14: Handle Validation Errors (If Any)
|
|
382
|
+
|
|
383
|
+
```javascript
|
|
384
|
+
// Check for validation errors
|
|
385
|
+
const errorMessages = await page.locator('[role="alert"], .error, [class*="error"]').all();
|
|
386
|
+
if (errorMessages.length > 0) {
|
|
387
|
+
console.log('Validation errors found:');
|
|
388
|
+
for (const error of errorMessages) {
|
|
389
|
+
const text = await error.textContent();
|
|
390
|
+
console.log(`- ${text}`);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// Fix errors and retry
|
|
394
|
+
// Example: If country/state/industry missing, repeat steps 7-9
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
### Step 15: Complete Remaining Pages (If Any)
|
|
401
|
+
|
|
402
|
+
```javascript
|
|
403
|
+
// If additional pages appear, continue filling them
|
|
404
|
+
// Common additional pages:
|
|
405
|
+
// - AWS Account linking
|
|
406
|
+
// - Additional company details
|
|
407
|
+
// - Terms and conditions
|
|
408
|
+
|
|
409
|
+
// Example: Accept terms
|
|
410
|
+
const termsCheckbox = page.getByRole('checkbox', { name: /terms|agreement/i });
|
|
411
|
+
if (await termsCheckbox.isVisible()) {
|
|
412
|
+
await termsCheckbox.check();
|
|
413
|
+
await page.waitForTimeout(500);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Example: Link AWS Account (if prompted)
|
|
417
|
+
const linkAccountButton = page.getByRole('button', { name: /link.*account|connect/i });
|
|
418
|
+
if (await linkAccountButton.isVisible()) {
|
|
419
|
+
// May require manual intervention
|
|
420
|
+
console.log('AWS Account linking required - may need manual step');
|
|
421
|
+
}
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
### Step 16: Submit Application
|
|
427
|
+
|
|
428
|
+
```javascript
|
|
429
|
+
// Click final submit button
|
|
430
|
+
await page.getByRole('button', { name: /submit|finish|complete/i }).click();
|
|
431
|
+
await page.waitForTimeout(5000);
|
|
432
|
+
|
|
433
|
+
// Wait for confirmation page
|
|
434
|
+
await page.waitForSelector('text=/success|submitted|thank you/i', { timeout: 10000 });
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Expected Result:** Application submitted successfully, confirmation page appears.
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Manual Steps (If Automation Fails)
|
|
442
|
+
|
|
443
|
+
### Common Issues and Solutions
|
|
444
|
+
|
|
445
|
+
1. **Dropdown Not Opening:**
|
|
446
|
+
- Try clicking the dropdown multiple times
|
|
447
|
+
- Use `page.evaluate()` to directly interact with DOM
|
|
448
|
+
- Try keyboard navigation (Tab, Enter, Arrow keys)
|
|
449
|
+
|
|
450
|
+
2. **Element Not Found:**
|
|
451
|
+
- Wait longer for page to load
|
|
452
|
+
- Check if element is in iframe
|
|
453
|
+
- Use more generic selectors (e.g., `page.locator('input[type="text"]')`)
|
|
454
|
+
|
|
455
|
+
3. **Validation Errors:**
|
|
456
|
+
- Ensure all required fields are filled
|
|
457
|
+
- Check field formats (phone numbers, emails)
|
|
458
|
+
- Verify dropdown selections are correct
|
|
459
|
+
|
|
460
|
+
4. **AWS Account Linking:**
|
|
461
|
+
- May require manual intervention
|
|
462
|
+
- User may need to sign in to AWS account separately
|
|
463
|
+
- Follow on-screen instructions
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Verification
|
|
468
|
+
|
|
469
|
+
### Check Application Status
|
|
470
|
+
|
|
471
|
+
```javascript
|
|
472
|
+
// Navigate to AWS Activate dashboard
|
|
473
|
+
await page.goto('https://aws.amazon.com/startups/dashboard');
|
|
474
|
+
await page.waitForTimeout(3000);
|
|
475
|
+
|
|
476
|
+
// Check for application status
|
|
477
|
+
const status = await page.locator('[class*="status"], [class*="application"]').textContent();
|
|
478
|
+
console.log(`Application Status: ${status}`);
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
## Expected Outcomes
|
|
484
|
+
|
|
485
|
+
- **Application Submitted:** Confirmation page or email
|
|
486
|
+
- **Processing Time:** 7-10 business days
|
|
487
|
+
- **Approval Email:** Sent to registered email address
|
|
488
|
+
- **Credits Added:** Automatically added to AWS account upon approval
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## Troubleshooting
|
|
493
|
+
|
|
494
|
+
### If Application Fails
|
|
495
|
+
|
|
496
|
+
1. **Check Browser Console:**
|
|
497
|
+
```javascript
|
|
498
|
+
// Log all console errors
|
|
499
|
+
page.on('console', msg => console.log('Browser console:', msg.text()));
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
2. **Take Screenshot:**
|
|
503
|
+
```javascript
|
|
504
|
+
await page.screenshot({ path: 'aws-application-error.png', fullPage: true });
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
3. **Check Network Requests:**
|
|
508
|
+
```javascript
|
|
509
|
+
page.on('response', response => {
|
|
510
|
+
if (response.status() >= 400) {
|
|
511
|
+
console.log(`Error: ${response.url()} - ${response.status()}`);
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## Next Steps After Submission
|
|
519
|
+
|
|
520
|
+
1. **Monitor Email:** Check user's email for approval notification
|
|
521
|
+
2. **Check AWS Console:** Verify credits appear in billing dashboard
|
|
522
|
+
3. **Follow Up:** If no response after 10 business days, contact AWS support
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## Resources
|
|
527
|
+
|
|
528
|
+
- **AWS Activate Main Page:** https://aws.amazon.com/startups
|
|
529
|
+
- **AWS Activate FAQ:** https://aws.amazon.com/activate/faq/
|
|
530
|
+
- **AWS Support:** https://aws.amazon.com/support/
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
**Last Updated:** November 2025
|
|
535
|
+
**Status:** Ready for automation
|