• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 28599388330 / 3
81%
master: 76%

Build:
Build:
LAST BUILD BRANCH: dependabot/github_actions/actions-deps-2d1112a488
DEFAULT BRANCH: master
Ran 02 Jul 2026 02:56PM UTC
Files 888
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Jul 2026 02:51PM UTC coverage: 52.972% (+3.3%) from 49.627%
28599388330.3

push

github

web-flow
refactor(projectSettings): split files DEV-2214 (#7193)

### 💭 Notes

Split monolithic ProjectSettings component (1320 lines) into modular
structure with separate step components, shared utilities, comprehensive
tests, and Storybook stories.

The ProjectSettings component handles three contexts: creating new
projects, replacing project forms, and editing existing project
settings. This refactor breaks it into:

- **5 step components** (FormSource, ChooseTemplate, UploadFile,
ImportUrl, ProjectDetails)
- **Shared utilities** (types.ts, utils.ts, constants.ts with 19 unit
tests)
- **7 Storybook stories** covering all wizard steps and contexts
- **Mock infrastructure improvements** using assetFactory pattern for
templates

Main component reduced from 1320 to ~780 lines. No functional
changes—all three contexts work the same way they did before.

Changes here:

**New Directory Structure:**
- `jsapp/js/project/ProjectSettings/` - New home for everything
  - `ProjectSettings.tsx` - Main orchestrator component
  - `ProjectSettings.module.scss` - Moved from modalForms
  - `index.ts` - Public exports
  - `types.ts` - All TypeScript interfaces
  - `constants.ts` - STEPS constant with type-safe StepName, step titles
- `utils.ts` - Pure helper functions (validation, field initialization,
URI parsing)
- `utils.tests.ts` - 19 unit tests for validateProjectFields with helper
functions

**Step Components** (`steps/` directory):
- `StepFormSource.tsx` - 4 big source selection buttons
- `StepChooseTemplate.tsx` - Template browser with TemplatesList
- `StepUploadFile.tsx` - Dropzone for XLSForm upload
- `StepImportUrl.tsx` - URL input with validation
- `StepProjectDetails.tsx` - Large form with all metadata fields

**Shared Components** (`components/` directory):
- `BackButton.tsx` - Reusable back navigation button

**Storybook** (`ProjectSettings.stories.tsx`):
- 7 stories covering: ModalStep_ChooseSource,
ModalStep_BuildFromScratch, ModalStep_ChooseTemplate,
ModalStep... (continued)

5072 of 12460 branches covered (40.71%)

19605 of 37010 relevant lines covered (52.97%)

0.53 hits per line

Source Files on job 28599388330.3
  • Tree
  • List 888
  • Changed 176
  • Source Changed 0
  • Coverage Changed 176
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 28599388330
  • b815fcbf on github
  • Prev Job for on main (#28599329881.3)
  • Next Job for on main (#28600649892.4)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc