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

kobotoolbox / kpi / 38541311361
83%
master: 76%

Build:
Build:
LAST BUILD BRANCH: reorganize-constance-fieldsets
DEFAULT BRANCH: master
Ran 14 Oct 2026 09:22AM UTC
Jobs 10
Files 920
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

14 Oct 2026 09:17AM UTC coverage: 83.313%. Remained the same
38541311361

push

github

web-flow
fix(frontend): long text breaking ellipsis in safari DEV-3025 (#7668)

### đŸ“Ŗ Summary

Long transcripts no longer show an empty cell with just `â€Ļ` in the data
table when using Safari.

### 💭 Notes

Safari refuses to paint the text of a single-line, ellipsis-trimmed
element once that line holds a text node longer than 10240 characters.
It still paints the `â€Ļ`, just nothing before it. Chrome and Firefox
don't care.

Changes here:
- `tableUtils.ts` — new `getCellPreviewText()`, caps a response at 1000
characters (avoids cutting emoji in half)
- `DataTableCell/TextCell.tsx` — uses the new utility on preview text
- `DataTableCell/index.tsx` — for modal-less text that can be long we
have screen- and print-only versions (`DataTableCell.module.scss` swaps
the two)
- `DataTableCell.stories.tsx` — `LongSupplementalTranscript` story with
a ~14k character transcript


### 👀 Preview steps

1. â„šī¸ **use Safari**
2. â„šī¸ have a project with an audio question and at least one submission
3. transcribe that recording with a manual transcription with more than
10240 characters
4. go to Project → Data → Table and find the transcript column
5. 🔴 [on main] the cell shows only `â€Ļ`, no text
6. đŸŸĸ [on PR] the cell shows the first few words of the transcript
7. đŸŸĸ click the expand icon in that cell and notice the dialog still
holds the whole transcript, not just the preview
8. go buy yourself some chocolate
9. eat chocolate đŸĢ đŸĢ

10553 of 13884 branches covered (76.01%)

33585 of 40312 relevant lines covered (83.31%)

5.5 hits per line

Coverage Regressions

Lines Coverage ∆ File
667
5.22
-74.11% kpi/utils/query_parser/canopy_autogenerated_parser/__init__.py
336
24.66
-45.28% kpi/models/import_export_task.py
312
0.0
-91.23% kobo/apps/openrosa/apps/viewer/pandas_mongo_bridge.py
226
53.15
-38.5% kpi/models/asset.py
214
55.61
-31.99% kobo/apps/openrosa/libs/utils/logger_tools.py
209
19.68
-56.33% kobo/apps/openrosa/libs/utils/export_tools.py
206
0.0
-86.19% kobo/apps/openrosa/libs/utils/briefcase_client.py
192
34.42
-29.77% kpi/serializers/v2/asset.py
135
25.26
-71.05% kpi/utils/query_parser/query_parser.py
132
25.85
-21.32% kpi/deployment_backends/openrosa_backend.py
125
58.86
-34.06% kpi/mixins/object_permission.py
123
28.84
-33.15% kpi/views/v2/asset.py
121
25.41
-66.85% kobo/apps/openrosa/apps/logger/utils/attachment_restore.py
101
43.33
-24.05% kpi/deployment_backends/base_backend.py
97
30.58
-47.09% kobo/apps/project_ownership/models/transfer.py
94
26.26
-47.47% kobo/apps/openapi_validator/middleware.py
89
30.37
-65.93% kpi/utils/mailer.py
87
0.0
-87.88% kobo/apps/openrosa/libs/utils/backup_tools.py
73
0.0
-96.05% kobo/apps/openrosa/apps/logger/utils/suspension.py
71
42.44
-34.63% kpi/utils/mongo_helper.py
70
64.46
-24.39% kobo/apps/openrosa/apps/logger/xform_instance_parser.py
70
23.4
-74.47% kpi/utils/xlsform_preprocessors/kobomatrix_handler.py
69
0.0
-65.09% kobo/apps/accounts/adapter.py
69
47.3
-46.62% kpi/utils/django_orm_helper.py
67
25.35
-31.46% kpi/filters.py
66
33.33
-59.46% kobo/apps/openrosa/apps/viewer/views.py
66
50.0
-33.0% kpi/utils/xml.py
64
12.36
-71.91% kobo/apps/reports/report_data.py
58
0.0
-90.63% kobo/apps/openrosa/libs/data/query.py
58
31.46
-65.17% kpi/deployment_backends/mock_backend.py
54
35.34
-40.6% kpi/paginators.py
53
43.6
-11.91% kobo/apps/audit_log/models.py
51
23.66
-38.93% kobo/apps/openrosa/apps/logger/utils/instance.py
50
27.72
-49.5% kpi/password_validation.py
49
28.57
-43.75% kobo/apps/openrosa/apps/logger/views.py
48
53.18
-21.82% kpi/permissions.py
47
52.42
-37.9% kobo/apps/openrosa/apps/logger/signals.py
47
0.0
-58.02% kobo/apps/openrosa/apps/logger/tasks.py
44
45.72
-16.36% kobo/apps/openrosa/apps/viewer/models/data_dictionary.py
44
37.61
-37.61% kpi/models/asset_snapshot.py
41
57.5
-17.08% kobo/apps/openrosa/apps/viewer/models/parsed_instance.py
40
0.0
-40.82% kobo/apps/openrosa/apps/viewer/xls_writer.py
40
23.29
-54.79% kobo/apps/openrosa/libs/utils/image_tools.py
40
35.43
-31.5% kpi/utils/usage_calculator.py
39
19.15
-41.49% kobo/apps/accounts/signup_fields.py
39
33.33
-46.43% kobo/apps/audit_log/base_views.py
39
35.2
-31.2% kpi/models/paired_data.py
38
24.14
-32.76% kobo/apps/openrosa/apps/viewer/tasks.py
38
41.18
-27.94% kpi/utils/autoname.py
36
24.49
-73.47% kobo/apps/openrosa/apps/logger/import_tools.py
35
52.04
-17.86% kpi/mixins/formpack_xlsform_utils.py
35
18.75
-72.92% kpi/utils/xlsform_preprocessors/koborank_handler.py
34
39.25
-31.78% kobo/apps/accounts/forms.py
34
37.14
-48.57% kpi/utils/cache.py
33
49.02
-32.35% kobo/apps/openrosa/apps/viewer/models/export.py
32
53.92
-31.37% kpi/models/asset_file.py
30
59.68
-24.19% kobo/apps/openrosa/apps/logger/models/attachment.py
29
47.62
-17.26% kobo/apps/openrosa/apps/main/models/meta_data.py
29
47.89
-40.85% kpi/utils/hash.py
29
21.95
-70.73% kpi/utils/xlsform_preprocessors/koboscore_handler.py
28
30.14
-19.18% kobo/apps/openrosa/libs/utils/viewer_tools.py
28
17.07
-68.29% kpi/utils/submission.py
28
28.01
-9.12% kpi/views/v2/data.py
27
15.52
-15.52% kobo/apps/project_ownership/utils.py
27
33.96
-50.94% kpi/fields/file.py
24
33.33
-66.67% kobo/apps/openrosa/libs/utils/decorators.py
24
29.67
-26.37% kobo/apps/openrosa/libs/utils/user_auth.py
24
40.0
-53.33% kpi/fields/jsonschema_form_field.py
24
54.84
-38.71% kpi/utils/kobo_to_xlsform.py
23
51.06
-48.94% kpi/views/v2/authorized_application_user.py
22
55.71
-15.71% kobo/apps/audit_log/signals.py
21
71.79
-10.77% kobo/apps/openrosa/apps/logger/models/instance.py
21
55.0
-17.5% kobo/apps/openrosa/libs/utils/middleware.py
21
43.06
-9.72% kpi/renderers.py
21
50.0
-45.65% kpi/serializers/v2/asset_version.py
21
54.55
-38.18% kpi/signals.py
21
23.08
-53.85% kpi/utils/asset_translation_utils.py
21
40.58
-30.43% kpi/utils/data_exports.py
21
26.47
-61.76% kpi/utils/export_cleanup.py
20
56.52
-28.99% hub/models/extra_user_detail.py
20
0.0
-68.97% kobo/apps/audit_log/tasks.py
19
74.41
-9.0% kobo/apps/openrosa/apps/logger/models/xform.py
18
37.84
-48.65% kpi/serializers/v2/create_user.py
18
60.56
-25.35% kpi/utils/sluggify.py
18
37.93
-62.07% kpi/views/token.py
17
16.22
-45.95% kobo/apps/openrosa/apps/logger/utils/database_query.py
17
39.73
-7.76% kobo/apps/organizations/views.py
15
31.71
-36.59% kobo/apps/openrosa/apps/logger/xform_fs.py
15
33.33
-55.56% kpi/utils/ssrf.py
15
26.19
-35.71% kpi/utils/urls.py
14
37.14
-20.0% hub/utils/i18n.py
14
44.0
-56.0% kobo/apps/openrosa/libs/utils/model_tools.py
13
54.84
-41.94% kobo/apps/openrosa/libs/authentication.py
13
26.09
-56.52% kpi/fields/relative_prefix_hyperlinked_related.py
13
46.34
-15.85% kpi/tasks.py
13
81.61
-14.94% kpi/utils/asset_content_analyzer.py
12
48.0
-24.0% kobo/apps/openrosa/apps/logger/utils/counters.py
12
43.06
-16.67% kobo/apps/project_ownership/serializers/invite.py
12
22.73
-54.55% kpi/utils/bugfix.py
11
59.76
-13.41% kobo/apps/project_ownership/models/invite.py
11
67.86
-19.64% kpi/context_processors.py
11
69.44
-30.56% kpi/models/asset_user_partial_permission.py
11
23.31
-3.09% kpi/serializers/v2/asset_permission_assignment.py
11
28.92
-13.25% kpi/utils/storage.py
11
55.56
-40.74% kpi/utils/xlsform_preprocessors/base_handlers.py
11
45.16
-17.74% kpi/views/v2/attachment.py
10
55.42
-12.05% kobo/apps/accounts/models.py
10
60.71
-35.71% kobo/apps/audit_log/utils.py
10
21.43
-35.71% kobo/apps/subsequences/utils/supplement_data.py
10
14.8
-5.1% kobo/apps/subsequences/utils/versioning.py
10
72.92
-20.83% kpi/models/asset_version.py
10
35.29
-58.82% kpi/utils/strings.py
9
18.63
-5.59% kobo/apps/stripe/utils/subscription_limits.py
9
35.29
-52.94% kpi/serializers/v1/authorized_application_user.py
9
41.18
-52.94% kpi/utils/viewset_mixins.py
7
41.67
-58.33% kobo/apps/openrosa/apps/logger/utils/attachment.py
7
61.76
-20.59% kobo/apps/storage_backends/base.py
7
57.14
-33.33% kpi/fields/paginated_api.py
7
53.33
-46.67% kpi/maintenance_tasks.py
7
70.37
-25.93% kpi/models/extra_project_metadata_field.py
7
61.11
-38.89% kpi/utils/files.py
7
72.38
-6.67% kpi/utils/object_permission.py
7
71.43
-20.0% kpi/utils/project_views.py
6
33.77
-7.79% kobo/apps/accounts/utils.py
6
20.0
-60.0% kobo/apps/openapi_validator/utils.py
6
56.22
-3.24% kobo/apps/organizations/models.py
6
43.75
-37.5% kobo/apps/project_ownership/filters.py
6
72.09
-13.95% kobo/apps/project_ownership/serializers/transfer.py
6
0.0
-100.0% kobo/apps/project_views/tasks.py
6
42.86
-42.86% kpi/mixins/asset.py
6
22.12
-5.31% kpi/utils/models.py
5
38.3
-5.32% kobo/apps/accounts/signals.py
5
60.53
-13.16% kobo/apps/data_collectors/signals.py
5
84.75
-8.47% kobo/apps/openrosa/apps/logger/exceptions.py
5
72.22
-27.78% kobo/apps/openrosa/apps/logger/models/daily_xform_submission_counter.py
5
75.0
-25.0% kobo/apps/openrosa/apps/logger/models/monthly_xform_submission_counter.py
5
0.0
-38.46% kobo/apps/openrosa/apps/main/context_processors.py
5
30.0
-7.14% kobo/apps/organizations/permissions.py
5
46.34
-12.2% kobo/apps/organizations/tasks.py
5
53.85
-6.41% kpi/deployment_backends/kc_access/utils.py
5
87.72
-8.77% kpi/deployment_backends/mixin.py
5
57.14
-23.81% kpi/fields/writable_json.py
5
25.0
-41.67% kpi/mixins/validation_password_permission.py
5
75.0
-20.83% kpi/models/authorized_application.py
5
29.41
-14.71% kpi/utils/rename_xls_sheet.py
4
53.85
-30.77% kobo/apps/accounts/templatetags/customize_email_content.py
4
77.5
-10.0% kobo/apps/kobo_auth/signals.py
4
45.45
-36.36% kobo/apps/openrosa/koboform/__init__.py
4
50.0
-10.53% kobo/apps/organizations/utils.py
4
78.79
-12.12% kobo/urls.py
4
33.33
-66.67% kpi/utils/chunked_delete.py
4
80.0
-20.0% kpi/views/v1_api_gone.py
3
95.76
-2.54% kobo/apps/openrosa/apps/api/viewsets/xform_submission_api.py
3
80.0
-20.0% kobo/apps/openrosa/apps/viewer/signals.py
3
89.19
-8.11% kobo/apps/project_views/models/project_view.py
3
76.47
-17.65% kpi/utils/pyxform_compatibility.py
3
61.54
-23.08% kpi/versioning.py
2
0.0
-100.0% kobo/apps/openrosa/apps/logger/constants.py
2
91.3
-8.7% kobo/apps/project_ownership/views/invite.py
2
66.67
-2.56% kpi/authentication.py
2
86.92
-1.54% kpi/exceptions.py
2
64.52
-6.45% kpi/mixins/standardize_searchable_field.py
2
96.36
-3.64% kpi/mixins/xls_exportable.py
2
90.0
-10.0% kpi/utils/absolute_paths.py
1
44.44
-5.56% kobo/apps/accounts/templatetags/get_provider_appname.py
1
84.21
-5.26% kobo/apps/audit_log/middleware.py
1
86.11
-2.78% kobo/apps/openrosa/apps/logger/fields.py
1
91.3
-4.35% kobo/apps/openrosa/libs/permissions.py
1
94.12
-1.18% kobo/apps/openrosa/libs/renderers/renderers.py
1
68.75
-6.25% kobo/apps/openrosa/libs/utils/string.py
1
85.0
-5.0% kobo/settings/utils.py
1
57.89
-2.63% kpi/db_routers.py
1
79.49
-2.56% kpi/deployment_backends/kc_access/storage.py
1
96.67
-3.33% kpi/fields/kpi_uid.py
1
87.1
-3.23% kpi/fields/lazy_default_jsonb.py
Jobs
ID Job ID Ran Files Coverage
1 38541311361.1 14 Oct 2026 09:22AM UTC 915
43.44
2 38541311361.2 14 Oct 2026 09:23AM UTC 915
52.64
3 38541311361.3 14 Oct 2026 09:23AM UTC 915
49.6
4 38541311361.4 14 Oct 2026 09:24AM UTC 917
53.88
5 38541311361.5 14 Oct 2026 09:25AM UTC 917
50.85
6 38541311361.6 14 Oct 2026 09:25AM UTC 917
44.72
7 38541311361.7 14 Oct 2026 09:26AM UTC 918
68.04
8 38541311361.8 14 Oct 2026 09:26AM UTC 915
58.3
9 38541311361.9 14 Oct 2026 09:27AM UTC 917
59.38
10 38541311361.10 14 Oct 2026 09:29AM UTC 920
70.48
Source Files on build 38541311361
  • Tree
  • List 920
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • a98b8c3a on github
  • Prev Build on main (#38429220402)
  • Next Build on main (#38609118156)
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