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

kobotoolbox / kpi / 30907077616 / 5
59%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 04 Aug 2026 12:04PM UTC
Files 893
Run time 44s
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

04 Aug 2026 11:58AM UTC coverage: 45.537% (-14.5%) from 60.071%
30907077616.5

push

github

web-flow
fix(formbuilder): preserve manual skip logic and validation inputs DEV-2539 (#7347)

### đŸ“Ŗ Summary

Fixed an issue where skip logic and validation criteria entered manually
could be lost after closing and reopening the question settings panel.

### 💭 Notes

In the form builder's hand-code mode for skip logic and validation
criteria, closing the settings panel (clicking ✕) and reopening it would
reset the text field to the value it had when the panel was first
opened. This meant any edits made since opening the panel were silently
discarded — including deleting existing logic. Saving the form at that
point would preserve the stale value rather than the intended one.

The root cause was that `TextArea.render()` always resets the DOM value
to its original construction-time text. On each re-open, `render()` was
called again, clobbering whatever the user had typed. Separately,
`serialize()` read its value directly from the DOM element — which
returns empty string when the element is detached — and fell back to the
last-known non-empty value, making it impossible to clear existing
logic.

Also removed a spurious `survey.trigger('change')` that was firing when
switching to hand-code mode before the user had typed anything, which
caused the save button to show unsaved changes immediately on mode
switch.

### 👀 Preview steps

1. â„šī¸ Have a project with at least two questions
2. Open the form builder and click the settings (gear) icon on a
question
3. Go to **Skip Logic**, click "Manually enter your skip logic in
XLSForm code", and type `${q1} != ''`
4. Click ✕ to close the settings panel, then reopen it
5. 🔴 [on main] the textarea is empty or reset to its original value
6. đŸŸĸ [on PR] the textarea shows `${q1} != ''`
7. Clear the textarea completely, close the panel, and save the form
8. 🔴 [on main] the old skip logic value is still saved
9. đŸŸĸ [on PR] the skip logic is cleared
10. Repeat steps 3–9 using **Validation Criteria** instead of Skip Logic
11. đŸŸĸ [on PR] ... (continued)

3846 of 12692 branches covered (30.3%)

17135 of 37629 relevant lines covered (45.54%)

0.46 hits per line

Source Files on job 30907077616.5
  • Tree
  • List 893
  • Changed 202
  • Source Changed 0
  • Coverage Changed 202
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 30907077616
  • 9cee2cb5 on github
  • Prev Job for on main (#30896374304.9)
  • Next Job for on main (#30916481257.2)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc