fraim-framework 2.0.56 → 2.0.58

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.
Files changed (224) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/bin/fraim-mcp.js +14 -0
  3. package/bin/fraim.js +23 -0
  4. package/dist/src/cli/commands/init-project.js +10 -4
  5. package/dist/src/cli/commands/mcp.js +65 -0
  6. package/dist/src/cli/setup/mcp-config-generator.js +19 -16
  7. package/dist/src/fraim/issue-tracking/ado-provider.js +304 -0
  8. package/dist/src/fraim/issue-tracking/factory.js +63 -0
  9. package/dist/src/fraim/issue-tracking/github-provider.js +200 -0
  10. package/dist/src/fraim/issue-tracking/types.js +7 -0
  11. package/dist/src/fraim/issue-tracking-config.js +83 -0
  12. package/dist/src/local-mcp-server/stdio-server.js +207 -0
  13. package/dist/src/utils/workflow-parser.js +81 -0
  14. package/package.json +17 -12
  15. package/registry/scripts/pdf-styles.css +172 -0
  16. package/registry/scripts/prep-issue.sh +46 -4
  17. package/registry/scripts/profile-server.ts +131 -130
  18. package/registry/stubs/workflows/customer-development/user-survey-dispatch.md +1 -1
  19. package/registry/stubs/workflows/customer-development/users-to-target.md +1 -1
  20. package/registry/stubs/workflows/product-building/design.md +1 -1
  21. package/registry/stubs/workflows/product-building/implement.md +1 -1
  22. package/Claude.md +0 -1
  23. package/dist/registry/ai-manager-rules/customer-development-phases/phase1-customer-profiling.md +0 -101
  24. package/dist/registry/ai-manager-rules/customer-development-phases/phase2-platform-discovery.md +0 -235
  25. package/dist/registry/ai-manager-rules/customer-development-phases/phase3-prospect-qualification.md +0 -243
  26. package/dist/registry/ai-manager-rules/customer-development-phases/phase4-inventory-compilation.md +0 -206
  27. package/dist/registry/ai-manager-rules/design-phases/design-completeness-review.md +0 -73
  28. package/dist/registry/ai-manager-rules/design-phases/design-design.md +0 -145
  29. package/dist/registry/ai-manager-rules/implement-phases/implement-code.md +0 -283
  30. package/dist/registry/ai-manager-rules/implement-phases/implement-completeness-review.md +0 -120
  31. package/dist/registry/ai-manager-rules/implement-phases/implement-regression.md +0 -173
  32. package/dist/registry/ai-manager-rules/implement-phases/implement-repro.md +0 -104
  33. package/dist/registry/ai-manager-rules/implement-phases/implement-scoping.md +0 -100
  34. package/dist/registry/ai-manager-rules/implement-phases/implement-smoke.md +0 -237
  35. package/dist/registry/ai-manager-rules/implement-phases/implement-spike.md +0 -121
  36. package/dist/registry/ai-manager-rules/implement-phases/implement-validate.md +0 -375
  37. package/dist/registry/ai-manager-rules/retrospective.md +0 -116
  38. package/dist/registry/ai-manager-rules/shared-phases/address-pr-feedback.md +0 -188
  39. package/dist/registry/ai-manager-rules/shared-phases/submit-pr.md +0 -202
  40. package/dist/registry/ai-manager-rules/shared-phases/wait-for-pr-review.md +0 -170
  41. package/dist/registry/ai-manager-rules/spec-phases/spec-competitor-analysis.md +0 -105
  42. package/dist/registry/ai-manager-rules/spec-phases/spec-completeness-review.md +0 -66
  43. package/dist/registry/ai-manager-rules/spec-phases/spec-spec.md +0 -139
  44. package/dist/registry/ai-manager-rules/user-survey-phases/phase1-survey-scoping.md +0 -60
  45. package/dist/registry/ai-manager-rules/user-survey-phases/phase2-survey-build-linkedin.md +0 -23
  46. package/dist/registry/ai-manager-rules/user-survey-phases/phase3-survey-build-reddit.md +0 -22
  47. package/dist/registry/ai-manager-rules/user-survey-phases/phase4-survey-build-x.md +0 -21
  48. package/dist/registry/ai-manager-rules/user-survey-phases/phase5-survey-build-facebook.md +0 -19
  49. package/dist/registry/ai-manager-rules/user-survey-phases/phase6-survey-build-custom.md +0 -15
  50. package/dist/registry/ai-manager-rules/user-survey-phases/phase7-survey-dispatch.md +0 -45
  51. package/dist/registry/providers/ado.json +0 -19
  52. package/dist/registry/providers/github.json +0 -19
  53. package/dist/registry/scripts/cleanup-branch.js +0 -287
  54. package/dist/registry/scripts/evaluate-code-quality.js +0 -66
  55. package/dist/registry/scripts/exec-with-timeout.js +0 -142
  56. package/dist/registry/scripts/generate-engagement-emails.js +0 -705
  57. package/dist/registry/scripts/newsletter-helpers.js +0 -671
  58. package/dist/registry/scripts/profile-server.js +0 -388
  59. package/dist/registry/scripts/run-thank-you-workflow.js +0 -92
  60. package/dist/registry/scripts/send-newsletter-simple.js +0 -85
  61. package/dist/registry/scripts/send-thank-you-emails.js +0 -54
  62. package/dist/registry/scripts/validate-openapi-limits.js +0 -311
  63. package/dist/registry/scripts/validate-test-coverage.js +0 -262
  64. package/dist/registry/scripts/verify-test-coverage.js +0 -66
  65. package/dist/registry/templates/bootstrap/ARCHITECTURE-TEMPLATE.md +0 -53
  66. package/dist/registry/templates/bootstrap/CODE-QUALITY-REPORT-TEMPLATE.md +0 -37
  67. package/dist/registry/templates/bootstrap/TEST-COVERAGE-REPORT-TEMPLATE.md +0 -35
  68. package/dist/registry/templates/business-development/IDEATION-REPORT-TEMPLATE.md +0 -29
  69. package/dist/registry/templates/business-development/PRICING-STRATEGY-TEMPLATE.md +0 -126
  70. package/dist/registry/templates/customer-development/customer-interview-template.md +0 -99
  71. package/dist/registry/templates/customer-development/customer-persona-template.md +0 -69
  72. package/dist/registry/templates/customer-development/follow-up-email-templates.md +0 -132
  73. package/dist/registry/templates/customer-development/insight-analysis-template.md +0 -74
  74. package/dist/registry/templates/customer-development/prospect-inventory-template.csv +0 -3
  75. package/dist/registry/templates/customer-development/search-strategy-template.md +0 -123
  76. package/dist/registry/templates/customer-development/strategic-recommendations-template.md +0 -53
  77. package/dist/registry/templates/customer-development/thank-you-email-template.html +0 -124
  78. package/dist/registry/templates/customer-development/thank-you-note-template.md +0 -16
  79. package/dist/registry/templates/customer-development/triage-log-template.md +0 -278
  80. package/dist/registry/templates/customer-development/weekly-newsletter-template.html +0 -204
  81. package/dist/registry/templates/evidence/Design-Evidence.md +0 -30
  82. package/dist/registry/templates/evidence/Implementation-BugEvidence.md +0 -94
  83. package/dist/registry/templates/evidence/Implementation-FeatureEvidence.md +0 -129
  84. package/dist/registry/templates/evidence/Spec-Evidence.md +0 -19
  85. package/dist/registry/templates/help/HelpNeeded.md +0 -14
  86. package/dist/registry/templates/legal/NDA-TEMPLATE.md +0 -170
  87. package/dist/registry/templates/legal/PATENT-TEMPLATE.md +0 -372
  88. package/dist/registry/templates/legal/TRADEMARK-TEMPLATE.md +0 -339
  89. package/dist/registry/templates/legal/contract-review-checklist.md +0 -193
  90. package/dist/registry/templates/legal/review-report-template.md +0 -198
  91. package/dist/registry/templates/legal/saas-terms-template.md +0 -174
  92. package/dist/registry/templates/legal/sow-template.md +0 -117
  93. package/dist/registry/templates/legal/template-variables.md +0 -131
  94. package/dist/registry/templates/marketing/DOMAIN-REGISTRATION-TEMPLATE.md +0 -194
  95. package/dist/registry/templates/marketing/HBR-ARTICLE-TEMPLATE.md +0 -66
  96. package/dist/registry/templates/marketing/STORYTELLING-TEMPLATE.md +0 -130
  97. package/dist/registry/templates/marketing/WEBSITE-TEMPLATE.md +0 -262
  98. package/dist/registry/templates/marketing/github-pages-workflow.yml +0 -64
  99. package/dist/registry/templates/replicate/implementation-checklist.md +0 -39
  100. package/dist/registry/templates/replicate/use-cases-template.md +0 -88
  101. package/dist/registry/templates/retrospective/RETROSPECTIVE-TEMPLATE.md +0 -55
  102. package/dist/registry/templates/specs/BUGSPEC-TEMPLATE.md +0 -37
  103. package/dist/registry/templates/specs/FEATURESPEC-TEMPLATE.md +0 -66
  104. package/dist/registry/templates/specs/TECHSPEC-TEMPLATE.md +0 -39
  105. package/dist/registry/workflows/bootstrap/create-architecture.md +0 -38
  106. package/dist/registry/workflows/bootstrap/detect-broken-windows.md +0 -300
  107. package/dist/registry/workflows/bootstrap/evaluate-code-quality.md +0 -35
  108. package/dist/registry/workflows/bootstrap/verify-test-coverage.md +0 -36
  109. package/dist/registry/workflows/brainstorming/blue-sky-brainstorming.md +0 -211
  110. package/dist/registry/workflows/brainstorming/codebase-brainstorming.md +0 -165
  111. package/dist/registry/workflows/business-development/create-business-plan.md +0 -737
  112. package/dist/registry/workflows/business-development/ideate-business-opportunity.md +0 -55
  113. package/dist/registry/workflows/business-development/price-product.md +0 -325
  114. package/dist/registry/workflows/compliance/detect-compliance-requirements.md +0 -78
  115. package/dist/registry/workflows/compliance/generate-audit-evidence.md +0 -75
  116. package/dist/registry/workflows/compliance/soc2-evidence-generator.md +0 -332
  117. package/dist/registry/workflows/customer-development/insight-analysis.md +0 -156
  118. package/dist/registry/workflows/customer-development/insight-triage.md +0 -938
  119. package/dist/registry/workflows/customer-development/interview-preparation.md +0 -452
  120. package/dist/registry/workflows/customer-development/linkedin-outreach.md +0 -593
  121. package/dist/registry/workflows/customer-development/strategic-brainstorming.md +0 -146
  122. package/dist/registry/workflows/customer-development/thank-customers.md +0 -203
  123. package/dist/registry/workflows/customer-development/user-survey-dispatch.md +0 -60
  124. package/dist/registry/workflows/customer-development/users-to-target.md +0 -112
  125. package/dist/registry/workflows/customer-development/weekly-newsletter.md +0 -366
  126. package/dist/registry/workflows/deploy/cloud-deployment.md +0 -310
  127. package/dist/registry/workflows/improve-fraim/contribute.md +0 -32
  128. package/dist/registry/workflows/improve-fraim/file-issue.md +0 -32
  129. package/dist/registry/workflows/learning/build-skillset.md +0 -212
  130. package/dist/registry/workflows/learning/synthesize-learnings.md +0 -284
  131. package/dist/registry/workflows/legal/contract-review-analysis.md +0 -382
  132. package/dist/registry/workflows/legal/nda.md +0 -69
  133. package/dist/registry/workflows/legal/patent-filing.md +0 -76
  134. package/dist/registry/workflows/legal/saas-contract-development.md +0 -213
  135. package/dist/registry/workflows/legal/trademark-filing.md +0 -77
  136. package/dist/registry/workflows/marketing/content-creation.md +0 -37
  137. package/dist/registry/workflows/marketing/convert-to-pdf.md +0 -235
  138. package/dist/registry/workflows/marketing/create-modern-website.md +0 -456
  139. package/dist/registry/workflows/marketing/domain-registration.md +0 -323
  140. package/dist/registry/workflows/marketing/hbr-article.md +0 -73
  141. package/dist/registry/workflows/marketing/launch-checklist.md +0 -37
  142. package/dist/registry/workflows/marketing/marketing-strategy.md +0 -45
  143. package/dist/registry/workflows/marketing/storytelling.md +0 -65
  144. package/dist/registry/workflows/performance/analyze-performance.md +0 -65
  145. package/dist/registry/workflows/product-building/design.md +0 -103
  146. package/dist/registry/workflows/product-building/implement.md +0 -74
  147. package/dist/registry/workflows/product-building/iterate-on-pr-comments.md +0 -70
  148. package/dist/registry/workflows/product-building/prep-issue.md +0 -41
  149. package/dist/registry/workflows/product-building/prototype.md +0 -65
  150. package/dist/registry/workflows/product-building/resolve.md +0 -168
  151. package/dist/registry/workflows/product-building/retrospect.md +0 -86
  152. package/dist/registry/workflows/product-building/spec.md +0 -181
  153. package/dist/registry/workflows/product-building/test.md +0 -125
  154. package/dist/registry/workflows/productivity-report/productivity-report.md +0 -263
  155. package/dist/registry/workflows/quality-assurance/browser-validation.md +0 -221
  156. package/dist/registry/workflows/quality-assurance/iterative-improvement-cycle.md +0 -562
  157. package/dist/registry/workflows/replicate/replicate-discovery.md +0 -336
  158. package/dist/registry/workflows/replicate/replicate-to-issues.md +0 -324
  159. package/dist/registry/workflows/reviewer/review-implementation-vs-design-spec.md +0 -638
  160. package/dist/registry/workflows/reviewer/review-implementation-vs-feature-spec.md +0 -675
  161. package/dist/registry/workflows/startup-credits/aws-activate-application.md +0 -535
  162. package/dist/registry/workflows/startup-credits/google-cloud-application.md +0 -647
  163. package/dist/registry/workflows/startup-credits/microsoft-azure-application.md +0 -538
  164. package/dist/scripts/build-stub-registry.js +0 -108
  165. package/dist/src/ai-manager/ai-manager.js +0 -480
  166. package/dist/src/ai-manager/phase-flow.js +0 -357
  167. package/dist/src/ai-manager/types.js +0 -5
  168. package/dist/src/fraim-mcp-server.js +0 -1885
  169. package/dist/tests/debug-tools.js +0 -80
  170. package/dist/tests/shared-server-utils.js +0 -57
  171. package/dist/tests/test-add-ide.js +0 -283
  172. package/dist/tests/test-ai-coach-edge-cases.js +0 -420
  173. package/dist/tests/test-ai-coach-mcp-integration.js +0 -450
  174. package/dist/tests/test-ai-coach-performance.js +0 -328
  175. package/dist/tests/test-ai-coach-phase-content.js +0 -264
  176. package/dist/tests/test-ai-coach-workflows.js +0 -514
  177. package/dist/tests/test-cli.js +0 -228
  178. package/dist/tests/test-client-scripts-validation.js +0 -167
  179. package/dist/tests/test-complete-setup-flow.js +0 -110
  180. package/dist/tests/test-config-system.js +0 -279
  181. package/dist/tests/test-debug-session.js +0 -134
  182. package/dist/tests/test-end-to-end-hybrid-validation.js +0 -328
  183. package/dist/tests/test-enhanced-session-init.js +0 -188
  184. package/dist/tests/test-first-run-journey.js +0 -368
  185. package/dist/tests/test-fraim-issues.js +0 -59
  186. package/dist/tests/test-genericization.js +0 -44
  187. package/dist/tests/test-hybrid-script-execution.js +0 -340
  188. package/dist/tests/test-ide-detector.js +0 -46
  189. package/dist/tests/test-improved-setup.js +0 -121
  190. package/dist/tests/test-mcp-config-generator.js +0 -99
  191. package/dist/tests/test-mcp-connection.js +0 -107
  192. package/dist/tests/test-mcp-issue-integration.js +0 -156
  193. package/dist/tests/test-mcp-lifecycle-methods.js +0 -240
  194. package/dist/tests/test-mcp-shared-server.js +0 -308
  195. package/dist/tests/test-mcp-template-processing.js +0 -160
  196. package/dist/tests/test-modular-issue-tracking.js +0 -165
  197. package/dist/tests/test-node-compatibility.js +0 -95
  198. package/dist/tests/test-npm-install.js +0 -68
  199. package/dist/tests/test-package-size.js +0 -108
  200. package/dist/tests/test-pr-review-workflow.js +0 -307
  201. package/dist/tests/test-prep-issue.js +0 -129
  202. package/dist/tests/test-productivity-integration.js +0 -157
  203. package/dist/tests/test-script-location-independence.js +0 -198
  204. package/dist/tests/test-script-sync.js +0 -557
  205. package/dist/tests/test-server-utils.js +0 -32
  206. package/dist/tests/test-session-rehydration.js +0 -148
  207. package/dist/tests/test-setup-integration.js +0 -98
  208. package/dist/tests/test-setup-scenarios.js +0 -322
  209. package/dist/tests/test-standalone.js +0 -143
  210. package/dist/tests/test-stub-registry.js +0 -136
  211. package/dist/tests/test-sync-stubs.js +0 -143
  212. package/dist/tests/test-sync-version-update.js +0 -93
  213. package/dist/tests/test-telemetry.js +0 -193
  214. package/dist/tests/test-token-validator.js +0 -30
  215. package/dist/tests/test-user-journey.js +0 -236
  216. package/dist/tests/test-users-to-target-workflow.js +0 -253
  217. package/dist/tests/test-utils.js +0 -109
  218. package/dist/tests/test-wizard.js +0 -71
  219. package/dist/tests/test-workflow-discovery.js +0 -242
  220. package/labels.json +0 -52
  221. package/registry/agent-guardrails.md +0 -63
  222. package/registry/fraim.md +0 -48
  223. package/setup.js +0 -171
  224. package/tsconfig.json +0 -23
@@ -1,535 +0,0 @@
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