Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
886 commits
Select commit Hold shift + click to select a range
ada91d5
fix(GiniInternalPaymentSDK): Address PR review comments
zladzeyka May 11, 2026
a90b5ca
test(GiniInternalPaymentSDK): Strengthen errorMessage assertion to ch…
zladzeyka May 11, 2026
39377a7
fix(GiniInternalPaymentSDK): Fix Dynamic Type not responding to runti…
zladzeyka May 11, 2026
4fa27f2
test(GiniInternalPaymentSDK): Restore unit test coverage lost during …
zladzeyka May 11, 2026
a604996
Merge remote-tracking branch 'origin/main' into release/health_refact…
zladzeyka May 11, 2026
67508e2
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 11, 2026
b3a1179
fix(GiniInternalPaymentSDK): Add accessibility state to FAQ headers
ValentinaIancu-Gini May 4, 2026
734f13e
fix(GiniHealthSDK): Add accessibility strings for FAQ headers
ValentinaIancu-Gini May 4, 2026
f41a9a5
fix(GiniInternalPaymentSDK): Announce validation errors via VoiceOver
ValentinaIancu-Gini May 4, 2026
251180f
fix(GiniInternalPaymentSDK): Group label pairs for VoiceOver
ValentinaIancu-Gini May 4, 2026
bb89250
fix(GiniInternalPaymentSDK): Fix documentation style
ValentinaIancu-Gini May 8, 2026
68e16ff
fix(GiniInternalPaymentSDK): Omit empty subtitle from a11y label
ValentinaIancu-Gini May 8, 2026
b0db68b
fix(GiniInternalPaymentSDK): Group toggle a11y strings into nested type
ValentinaIancu-Gini May 8, 2026
78a5f82
fix(GiniInternalPaymentSDK): Use hint for validation error VoiceOver
ValentinaIancu-Gini May 8, 2026
4960bdf
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 11, 2026
8d8e6c8
fix(GiniInternalPaymentSDK): Resolve duplicate helper and dead test a…
zladzeyka May 11, 2026
aca670c
test(GiniInternalPaymentSDK): Increase test coverage for HEAL-328 new…
zladzeyka May 11, 2026
2a872dd
refactor(GiniInternalPaymentSDK): Reduce PaymentInfoConfiguration.ini…
zladzeyka May 11, 2026
921266c
Merge pull request #1123 from gini/HEAL-328-Medium-Priority-issues
zladzeyka May 11, 2026
17858d5
refactor(GiniInternalPaymentSDK): Reduce PaymentInfoStrings.init from…
zladzeyka May 11, 2026
43fed09
Merge origin/release/health_refactor_error_codes into HEAL-359
zladzeyka May 11, 2026
7622d6e
Merge pull request #1124 from gini/HEAL-359-Cleanup-the-close-button-…
zladzeyka May 11, 2026
531278a
Merge origin/release/health_refactor_error_codes into HEAL-368
zladzeyka May 11, 2026
a252759
Merge origin/release/health_refactor_error_codes into HEAL-344
zladzeyka May 11, 2026
fbcc322
fix: Address PR review comments for HEAL-344 dynamic fonts
zladzeyka May 11, 2026
819ebb3
fix(GiniInternalPaymentSDK): resolve SonarCloud S4144 and S107 issues
zladzeyka May 11, 2026
98dbd49
fix(GiniInternalPaymentSDK): Merge release/health_refactor_error_code…
zladzeyka May 11, 2026
4949275
fix(GiniHealthSDK): Remove trailing dots from inline error messages
ValentinaIancu-Gini May 12, 2026
f49de7b
fix(GiniInternalPaymentSDK): address PR 1138 review comments
zladzeyka May 12, 2026
4ca7536
fix(GiniInternalPaymentSDK): Address PR review comments
zladzeyka May 12, 2026
0378cf9
fix(GiniMerchantSDK): Remove dead bic assignment from PaymentInfo map…
zladzeyka May 12, 2026
440c940
fix(GiniHealthSDK): Remove bic argument from PaymentInfo test helper
zladzeyka May 12, 2026
36a17d7
fix(GiniMerchantSDK): Remove bic argument from PaymentInfo in example…
zladzeyka May 12, 2026
d1ac627
fix(GiniInternalPaymentSDK): prevent amount error from disappearing o…
zladzeyka May 12, 2026
27589d3
fix(GiniInternalPaymentSDK): clear amount error on focus gain even wh…
zladzeyka May 12, 2026
01f9f43
fix(GiniInternalPaymentSDK): don't pre-fill zero amount on focus gain…
zladzeyka May 12, 2026
a41281b
fix(GiniUtilites): configure scheme for test
qnaveed87 May 12, 2026
391b948
fix(GiniInternalPaymentSDK): Fix bank selection scroll area at max ac…
zladzeyka May 12, 2026
5131754
Merge pull request #1139 from gini/HEAL-375-Dots-in-inline-error-mess…
qnaveed87 May 12, 2026
8dfb274
Merge pull request #1135 from gini/fix/HEAL-368_amount_error
zladzeyka May 13, 2026
7887684
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 13, 2026
a96b2f7
refactor(GiniInternalPaymentSDK): Rename dynamicFont to giniDynamicFo…
zladzeyka May 13, 2026
e916484
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 13, 2026
8238aa7
fix(GiniInternalPaymentSDK): Remove UIContentSizeCategory observer in…
zladzeyka May 13, 2026
260f424
refactor(GiniInternalPaymentSDK): Fix constraint alignment and add co…
zladzeyka May 13, 2026
1cee0ec
fix(GiniInternalPaymentSDK): Refactor amount error handling to clear …
qnaveed87 May 13, 2026
e9eecdf
fix(GiniInternalPaymentSDK): Clear Recipient, IBAN, and Purpose field…
qnaveed87 May 13, 2026
fc61e24
docs: Add Dynamic Type guidance to Typography section in customizatio…
zladzeyka May 13, 2026
ff55ef2
docs: Revert Dynamic Type section from Merchant SDK customization guide
zladzeyka May 13, 2026
b5556f9
fix(GiniInternalPaymentSDK): Scroll title and description with bank l…
zladzeyka May 13, 2026
f55fe9c
fix(GiniInternalPaymentSDK): Fix Dynamic Type issues in ShareInvoiceB…
zladzeyka May 13, 2026
e3b9659
refactor(GiniUtilites): Simplify FontProvider to compute fonts on demand
zladzeyka May 13, 2026
3b52f30
refactor: Remove dynamicTextFont closure from TextFieldConfiguration
zladzeyka May 13, 2026
e41c7e7
fix(GiniInternalPaymentSDK): Fix Dynamic Type layout and crash in ban…
zladzeyka May 13, 2026
599ec82
fix(GiniHealthSDK): Fix test assertions and correct docstring
zladzeyka May 13, 2026
e8c77f3
fix(GiniInternalPaymentSDK): Fix description label wrapping in access…
zladzeyka May 13, 2026
2b717be
Restructure green info bar layout above payment form fields
zladzeyka May 13, 2026
470c699
fix(GiniInternalPaymentSDK): Prevent keyboard dismissal when editing …
qnaveed87 May 13, 2026
fd1c0e0
fix(GiniInternalPaymentSDK): Remove hasError reset from handleAmountT…
qnaveed87 May 13, 2026
1992a44
fix(GiniInternalPaymentSDK): Error handling issue on landscape for do…
qnaveed87 May 13, 2026
d093720
Merge pull request #1141 from gini/fix/greenIfoBar_v2
ValentinaIancu-Gini May 15, 2026
1e202a7
Merge branch 'release/health_refactor_error_codes' into fix/HEAL-359_…
zladzeyka May 18, 2026
c968371
fix(GiniInternalPaymentSDK): Remove stale focusGainedClearsError test…
qnaveed87 May 18, 2026
4a95981
fix(GiniInternalPaymentSDK): Remove stale error-clearing tests and up…
qnaveed87 May 18, 2026
3df600e
fix(GiniInternalPaymentSDK): Remove stale focusGainedClearsError test…
qnaveed87 May 18, 2026
4a53161
fix(GiniInternalPaymentSDK): Update docs comments
qnaveed87 May 18, 2026
bf1facb
fix(GiniInternalPaymentSDK): Update docs comments
qnaveed87 May 18, 2026
335c8df
test(GiniInternalPaymentSDK): Add tests for clearErrorOnTextChange
qnaveed87 May 18, 2026
4a23c91
test(GiniInternalPaymentSDK): Add tests for focus changes
qnaveed87 May 18, 2026
62411dd
test(GiniInternalPaymentSDK): Add tests for validateAmountFieldOnKe…
qnaveed87 May 18, 2026
0e725c2
refactor: remove BIC from GiniHealthAPILibrary, GiniInternalPaymentSD…
zladzeyka May 18, 2026
b8a1ceb
docs(GiniHealthSDK): remove bic from PaymentInfo example in Integrati…
zladzeyka May 18, 2026
43ff37e
test(GiniInternalPaymentSDK): clearAmountErrorAfterKeyboardAppears ca…
qnaveed87 May 18, 2026
1d2a2b2
test(GiniInternalPaymentSDK): code cleaning to improve test coverge
qnaveed87 May 18, 2026
ee0a8b9
test(GiniInternalPaymentSDK): adding unit test to clear errors
qnaveed87 May 18, 2026
df4dcf0
test(GiniInternalPaymentSDK): removed unit test
qnaveed87 May 18, 2026
6f5e9f5
Merge branch 'release/health_refactor_error_codes' into fix/HEAL-344_…
zladzeyka May 18, 2026
8fa12ab
refactor(GiniInternalPaymentSDK): Simplify Dynamic Type implementation
zladzeyka May 19, 2026
b1c999d
fix(GiniInternalPaymentSDK): Fix PaymentInfo description not scaling …
zladzeyka May 19, 2026
98f98b0
fix(GiniUtilites): Apply UIFontMetrics scaling fresh on every font(fo…
zladzeyka May 19, 2026
5e73255
fix: Fix Dynamic Type scaling for PaymentInfo FAQ and Gini link text
zladzeyka May 19, 2026
03dee1e
docs(GiniInternalPaymentSDK): add inline comment explaining configura…
zladzeyka May 19, 2026
ac59abc
fix(GiniUtilites): Move empty init comment inside braces
zladzeyka May 19, 2026
61cb570
refactor(GiniInternalPaymentSDK): Remove failed accessibility header …
zladzeyka May 19, 2026
ea27e5a
test(GiniInternalPaymentSDK): update error on pressing banking app bu…
qnaveed87 May 19, 2026
cc12909
fix(GiniInternalPaymentSDK): Enable Dynamic Type scaling in InstallAp…
zladzeyka May 19, 2026
d9896ff
test(GiniInternalPaymentSDK): update docs formating
qnaveed87 May 19, 2026
be01425
test(GiniInternalPaymentSDK): update tests fro missing feilds
qnaveed87 May 19, 2026
c0aa6bf
Merge pull request #1137 from gini/fix/HEAL-359_payment_info_config_r…
zladzeyka May 19, 2026
dcd395c
Merge pull request #1138 from gini/fix/sonar-1128
zladzeyka May 19, 2026
acfbf6d
fix(GiniInternalPaymentSDK): Hide sheet before rotation snapshot
ValentinaIancu-Gini May 19, 2026
5fc4367
fix(GiniInternalPaymentSDK): suppress sheet slide-up animation on rot…
ValentinaIancu-Gini May 19, 2026
8700c41
fix(GiniInternalPaymentSDK): hide presentation container on rotation
ValentinaIancu-Gini May 19, 2026
975c1f3
fix(GiniInternalPaymentSDK): Clarify orientation comment in viewWillT…
ValentinaIancu-Gini May 19, 2026
178c601
fix(GiniInternalPaymentSDK): Dismiss bottom sheet imperatively on rot…
ValentinaIancu-Gini May 19, 2026
a49ae4f
fix(GiniInternalPaymentSDK): Update fonts for larger accessibility
qnaveed87 May 19, 2026
708b31f
Merge pull request #1144 from gini/fix/HEAL-407_install_bottomsheet
zladzeyka May 20, 2026
c06aade
test(GiniInternalPaymentSDK): remove doc comment
qnaveed87 May 20, 2026
d8cbce1
fix(GiniInternalPaymentSDK): Update comment regarding hide label
qnaveed87 May 20, 2026
2cc6045
fix(GiniInternalPaymentSDK): Update image aspect ration and removed f…
qnaveed87 May 20, 2026
23070b9
fix(GiniInternalPaymentSDK): Changing stack view axis when accessibil…
qnaveed87 May 20, 2026
279adb7
fix(GiniInternalPaymentSDK): Remove leading spacing when alignment is…
qnaveed87 May 20, 2026
d919694
Merge pull request #1148 from gini/HEAL-413-powered-by-gini-image-issue
ValentinaIancu-Gini May 20, 2026
5e112ab
fix(GiniInternalPaymentSDK): Update constraints fro add some padding
qnaveed87 May 20, 2026
0074176
Merge pull request #1143 from gini/HEAL-377-payment-review-keyboard-d…
qnaveed87 May 20, 2026
72d7865
fix(GiniInternalPaymentSDK): activate install with respect to layout
qnaveed87 May 20, 2026
533e29f
fix(GiniInternalPaymentSDK): Update doc comment
qnaveed87 May 20, 2026
850c6a4
fix(GiniInternalPaymentSDK): Update axis only when shouldShowBrandedV…
qnaveed87 May 20, 2026
2987fb5
Merge pull request #1146 from gini/HEAL-389-When-switching-between-po…
ValentinaIancu-Gini May 20, 2026
505df19
fix(GiniInternalPaymentSDK): Update comment style
qnaveed87 May 20, 2026
4272d37
Merge branch 'release/health_refactor_error_codes' into fix/HEAL-344_…
ValentinaIancu-Gini May 20, 2026
0797a71
fix(GiniInternalPaymentSDK): Update comment for handling accesibility
qnaveed87 May 20, 2026
abbed20
fix(GiniUtilites): respect accessibility category for limit fonts
qnaveed87 May 20, 2026
b048c4e
fix(GiniInternalPaymentSDK): Update linksFont reference to links.font…
ValentinaIancu-Gini May 20, 2026
9d1ee2e
Merge pull request #1136 from gini/fix/HEAL-344_dynamic_fonts
ValentinaIancu-Gini May 20, 2026
bad504c
fix(GiniUtilites): adding test covering accessibility sizes
qnaveed87 May 20, 2026
abdde99
feat(GiniHealthSDKExample): replace showBrandedView switch with Ingre…
zladzeyka May 20, 2026
891f5d7
fix(GiniHealthSDKExample): Address Copilot review comments on debug menu
zladzeyka May 20, 2026
362087b
fix(GiniInternalPaymentSDK): Fix button text truncation and clipping …
zladzeyka May 20, 2026
923ce2c
fix(GiniInternalPaymentSDK): Use vertical layout at accessibility fon…
zladzeyka May 20, 2026
1a784ab
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 20, 2026
99f566c
Merge remote-tracking branch 'origin/release/health_refactor_error_co…
zladzeyka May 20, 2026
171e2c2
feat(GiniHealthAPILibrary): raise minimum deployment target to iOS 17
zladzeyka May 20, 2026
4c2ca71
feat(GiniInternalPaymentSDK): raise minimum deployment target to iOS 17
zladzeyka May 20, 2026
f02c219
feat(GiniHealthSDK): raise minimum deployment target to iOS 17
zladzeyka May 20, 2026
211bd3a
Merge branch 'HEAL-410-issue-payment-component-200-gini-logo' into HE…
zladzeyka May 20, 2026
c871b31
revert(GiniInternalPaymentSDK): revert ShareInvoiceBottomView and Pay…
zladzeyka May 20, 2026
f81b405
Revert "revert(GiniInternalPaymentSDK): revert ShareInvoiceBottomView…
zladzeyka May 20, 2026
15105d5
revert(GiniInternalPaymentSDK): revert ShareInvoiceBottomView and Pay…
zladzeyka May 20, 2026
8911719
fix(GiniInternalPaymentSDK): Fix landscape layout issues in ShareInvo…
zladzeyka May 20, 2026
c58972f
Merge pull request #1149 from gini/HEAL-410-issue-payment-component-2…
ValentinaIancu-Gini May 21, 2026
89a23fa
Merge pull request #1147 from gini/HEAL-404-select-bank-description-c…
ValentinaIancu-Gini May 21, 2026
01b0d0c
Merge pull request #1150 from gini/HEAL-412_share_with_gini_logo
ValentinaIancu-Gini May 21, 2026
8f69a69
fix(GiniInternalPaymentSDK): Changes in stack view aix for orientatio…
qnaveed87 May 21, 2026
55ddf12
fix(GiniInternalPaymentSDK): Removed hardcoded heights to manage larg…
qnaveed87 May 21, 2026
7f9b05b
feat(GiniMerchantSDK): raise minimum deployment target to iOS 17.0
zladzeyka May 21, 2026
5558fb4
docs: update Xcode requirement to 26+ in Health SDK documentation
zladzeyka May 21, 2026
6441663
fix(GiniInternalPaymentSDK): derive layout orientation from transitio…
zladzeyka May 21, 2026
b7f468e
fix(GiniInternalPaymentSDK): Override intrinsicContentSize in MoreInf…
qnaveed87 May 21, 2026
e543f86
fix(GiniInternalPaymentSDK): margin to image height if normal font is…
qnaveed87 May 21, 2026
d8a5c53
refactor(GiniInternalPaymentSDK): Address PR review comments on intri…
qnaveed87 May 21, 2026
038ea04
refactor(GiniInternalPaymentSDK): removed unused constant
qnaveed87 May 21, 2026
135750c
test(GiniInternalPaymentSDK): add unit tests for landscape layout fixes
zladzeyka May 21, 2026
db75e95
refactor(GiniInternalPaymentSDK): Update doc style
qnaveed87 May 21, 2026
3a11dbf
fix(GiniInternalPaymentSDK): update height of sheet after orientation…
qnaveed87 May 21, 2026
0ce840c
fix(GiniInternalPaymentSDK): Use large detent for PaymentInfoViewCont…
ValentinaIancu-Gini May 21, 2026
432289c
fix(GiniInternalPaymentSDK): handled full screen via shouldIncludeLar…
qnaveed87 May 21, 2026
fbf67ee
Revert "fix(GiniInternalPaymentSDK): update height of sheet after ori…
qnaveed87 May 21, 2026
d2cc29f
fix(GiniInternalPaymentSDK): removed unused constants
qnaveed87 May 21, 2026
c11e18a
fix(GiniInternalPaymentSDK): removed old comment
qnaveed87 May 21, 2026
3a4559b
fix(GiniInternalPaymentSDK): Remove unused bottomSheetHeight constant
ValentinaIancu-Gini May 21, 2026
e44dade
Merge pull request #1154 from gini/HEAL-417-More-information-screen-i…
ValentinaIancu-Gini May 21, 2026
d36e7d5
Merge pull request #1155 from gini/HEAL-416-select-bank-sheet-size-is…
qnaveed87 May 21, 2026
0519a48
test(GiniInternalPaymentSDK): Add missing dependencies to the package…
qnaveed87 May 21, 2026
9673a1b
test(GiniInternalPaymentSDK): import missing files
qnaveed87 May 21, 2026
9abe53f
fix(GiniInternalPaymentSDK): Show grabber in landscape payment review
ValentinaIancu-Gini May 21, 2026
35ae222
fix(GiniInternalPaymentSDK): Fix failing unit tests in GiniInternalPa…
qnaveed87 May 21, 2026
d708d4f
fix(GiniInternalPaymentSDK): Update doc style
qnaveed87 May 21, 2026
be650e2
Revert "test(GiniInternalPaymentSDK): Add missing dependencies to the…
qnaveed87 May 21, 2026
a3fc0b7
Merge pull request #1156 from gini/HEAL-412-test-target-missing-depen…
zladzeyka May 22, 2026
adbbade
Merge pull request #1151 from gini/fix/HEAL-405_target_17
zladzeyka May 22, 2026
40a9404
Merge pull request #1152 from gini/fix/HEAL-412_landscape_layout_fixes
zladzeyka May 22, 2026
f348b24
Merge branch 'release/health_refactor_error_codes' into HEAL-409-issu…
zladzeyka May 22, 2026
6e334e3
Merge pull request #1153 from gini/HEAL-409-issue-select-bank-200-gin…
ValentinaIancu-Gini May 22, 2026
86dd777
Merge pull request #1157 from gini/HEAL-401-Sheet-grabber-not-visible…
ValentinaIancu-Gini May 22, 2026
bb36bfe
fix(GiniInternalPaymentSDK): voice over fixed in powered by
qnaveed87 May 22, 2026
d255210
fix(GiniInternalPaymentSDK): adding powered by gini in voice over ac…
qnaveed87 May 22, 2026
44fc4df
fix(GiniInternalPaymentSDK): elements were not visible while voice ov…
qnaveed87 May 22, 2026
a4f9971
fix(GiniInternalPaymentSDK): add powered by gini in voice over accesi…
qnaveed87 May 22, 2026
2491085
fix(GiniInternalPaymentSDK): chnaged container fro accessibility items
qnaveed87 May 22, 2026
f2a1710
fix(GiniInternalPaymentSDK): adding tests
qnaveed87 May 22, 2026
b219905
fix(GiniInternalPaymentSDK): Fix gini logo clipped at bottom in Insta…
zladzeyka May 22, 2026
11341ac
Merge pull request #1158 from gini/HEAL-421-vo-select-bank
ValentinaIancu-Gini May 22, 2026
95affcc
Merge pull request #1159 from gini/HEAL-423-vo-issue-powered-by
qnaveed87 May 22, 2026
de74400
Merge pull request #1160 from gini/fix/HEAL-425_install_bottom_sheet_…
ValentinaIancu-Gini May 26, 2026
6ed4368
build(deps): bump jwt in the bundler group across 1 directory
dependabot[bot] May 26, 2026
b90a3f4
fix(GiniHealthSDK): replace legacy icons with light/dark PDF variants
zladzeyka May 26, 2026
9bb25ab
Merge pull request #1161 from gini/dependabot/bundler/bundler-df781807e0
ValentinaIancu-Gini May 26, 2026
2b1c075
fix(GiniInternalPaymentSDK): Remove unused orientation parameter in g…
qnaveed87 May 26, 2026
df80b1c
fix(GiniInternalPaymentSDK): Remove unused orientation parameter in g…
qnaveed87 May 26, 2026
5032f09
refactor(GiniInternalPaymentSDK): address PR 1128 review comments
zladzeyka May 27, 2026
b2a54a9
docs(GiniHealthSDK): Update Figma links to iOS Gini Health SDK 6.0.0
qnaveed87 May 27, 2026
9c99000
docs(GiniHealthSDK): Fix indentation issue
qnaveed87 May 27, 2026
b3f3172
docs(GiniHealthSDK): Fix indentation issue and minor improvements
qnaveed87 May 27, 2026
424a2ea
refactor(GiniInternalPaymentSDK): Update doc style
qnaveed87 May 27, 2026
edf0608
refactor(GiniInternalPaymentSDK): Update copyright lable from file he…
qnaveed87 May 27, 2026
79aa436
docs(GiniHealthSDK): Update Integration guide
qnaveed87 May 27, 2026
831ea17
fix(GiniHealthSDK): Fix asset name for giniLogo in dark mode
zladzeyka May 27, 2026
4cedb05
Merge pull request #1162 from gini/fix/HEAL-427_icons
zladzeyka May 27, 2026
37a885a
Merge pull request #1163 from gini/sonar-unused-param-generateRecipie…
ValentinaIancu-Gini May 27, 2026
b5321ef
Merge pull request #1164 from gini/update-figma-documentation
qnaveed87 May 27, 2026
e4a53e4
fix(GiniInternalPaymentSDK): remove 16.4 version checked
qnaveed87 May 27, 2026
ddeb412
fix(GiniHealthSDK): Fix indentation
zladzeyka May 27, 2026
674c7b5
fix(GiniInternalPaymentSDK): remove private to get test passed
qnaveed87 May 27, 2026
9487341
Merge branch 'release/health_refactor_error_codes' of github.com:gini…
qnaveed87 May 27, 2026
af0f4cc
fix(GiniHealthSDK): swap Success01 light/dark color values
zladzeyka May 27, 2026
c4f37e6
fix(GiniUtilites): Bumps version 2.3.0
qnaveed87 May 27, 2026
12320c8
fix(GiniHealthAPILibrary): Bumps version 6.0.0
qnaveed87 May 27, 2026
2330ed1
fix(GiniInternalPaymentSDK): Bumps version 3.0.0
qnaveed87 May 27, 2026
1b15a97
fix(GiniHealthSDK): Bumps version 6.0.0
qnaveed87 May 27, 2026
9d3bfc6
Merge pull request #1165 from gini/bump-health-sdk-versions-6.0.0
qnaveed87 May 27, 2026
6efb033
fix(GiniMerchantSDK): add missing closeButtonAccessibilityHint to Pay…
zladzeyka May 27, 2026
85f43d9
fix: Fix package name extraction for GiniComponents in create_release…
qnaveed87 May 27, 2026
f5426c8
ci(GiniComponents): Fix project folder for Utilities
zladzeyka May 28, 2026
e70c3cd
ci(GiniComponents): Fix project folder for InternalPaymentSDK
zladzeyka May 28, 2026
7ff874a
ci(GiniInternalPaymentSDK): Use local check workflow in release to pi…
zladzeyka May 28, 2026
c7d8f80
ci(GiniHealthSDK): Pass all secrets to check workflow via inherit
zladzeyka May 28, 2026
bf5d090
Merge pull request #1128 from gini/release/health_refactor_error_codes
zladzeyka May 28, 2026
f1d4321
Merge branch 'main' of github.com:gini/gini-mobile-ios into PP-2483-e…
qnaveed87 May 29, 2026
a6626c3
Merge branch 'main' of github.com:gini/gini-mobile-ios into PP-2483-e…
qnaveed87 May 29, 2026
0d36a42
Merge branch 'PP-2483-enable-ui-test-Simulators' of github.com:gini/g…
qnaveed87 May 29, 2026
a4f37f3
refactor(GiniMerchantSDK): Remove GiniMerchantSDK sources
qnaveed87 Jun 1, 2026
bd49c2c
refactor(GiniMerchantSDK): Remove GiniMerchantSDK tests
qnaveed87 Jun 1, 2026
ecbb693
refactor(GiniMerchantSDK): Remove GiniMerchantSDK example app
qnaveed87 Jun 1, 2026
0b7a0e2
refactor(GiniMerchantSDK): Remove GiniMerchantSDK documentation
qnaveed87 Jun 1, 2026
8e3ea51
refactor(GiniMerchantSDK): Remove GiniMerchantSDK package files and e…
qnaveed87 Jun 1, 2026
7318c3b
refactor(GiniMerchantSDK): Remove GiniMerchantSDK from Xcode workspace
qnaveed87 Jun 1, 2026
9f99ea2
ci(GiniMerchantSDK): Remove GiniMerchantSDK GitHub Actions workflows
qnaveed87 Jun 1, 2026
daeab2a
ci(GiniMerchantSDK): Remove GiniMerchantSDK references from codeql wo…
qnaveed87 Jun 1, 2026
efb685f
ci(GiniMerchantSDK): Remove GiniMerchantSDK path trigger from health …
qnaveed87 Jun 1, 2026
45901bb
ci(GiniMerchantSDK): Remove GiniMerchantSDK from lint-all-main target…
qnaveed87 Jun 1, 2026
7c30c05
ci(GiniMerchantSDK): Remove GiniMerchantSDK from RELEASE-ORDER.md
qnaveed87 Jun 1, 2026
d877e21
ci(GiniMerchantSDK): Remove GiniMerchantSDK example app from Fastlane…
qnaveed87 Jun 1, 2026
7a8c811
refactor(GiniMerchantSDK): Remove GiniMerchantSDK references from CLA…
qnaveed87 Jun 1, 2026
2eb3e85
ci(GiniHealthAPILibrary): introduce reusable sdk.release.yml workflow…
zladzeyka Jun 1, 2026
c0d5375
ci: migrate remaining release workflows to reusable sdk.release.yml
zladzeyka Jun 1, 2026
9f79e27
ci: remove unused ci param from publish_swift_package lane
zladzeyka Jun 1, 2026
fc3ed7d
refactor(GiniMerchantSDK): Fix file headers in GiniInternalPaymentSDK…
qnaveed87 Jun 1, 2026
018dbcb
refactor(GiniHealthAPILibrary): Remove merchant APIDomain case
qnaveed87 Jun 2, 2026
3f9772b
ci: migrate generate-sboms to GitHub App auth and drop archived pinni…
zladzeyka Jun 2, 2026
39757ba
fix(fastlane): Unwrap single-element array from check_and_get_options…
zladzeyka Jun 2, 2026
be8dd7e
fix(fastlane): Use destructuring assignment for single option in gene…
zladzeyka Jun 2, 2026
043b60a
fix(GiniInternalPaymentSDK): Correct test target name in Package-rele…
zladzeyka Jun 2, 2026
68cf77a
Merge pull request #1167 from gini/PP-2326-removed-merchant-sdk
qnaveed87 Jun 3, 2026
8686dca
fix(licenses): add missing module licenses and clean up copyright y…
zladzeyka Jun 9, 2026
743a4cd
fix: Address Copilot review comments on license files
zladzeyka Jun 10, 2026
2b11b7b
fix: Remove unintended library index from BankSDK LICENSE
zladzeyka Jun 10, 2026
a2f67cf
fix(GiniHealthSDK): Remove trailing whitespace from LICENSE
zladzeyka Jun 10, 2026
0715ced
fix(GiniCaptureSDK): Simplify LICENSE to standard format
zladzeyka Jun 10, 2026
4299254
fix: Add library dependency tables to SDK LICENSE files
zladzeyka Jun 10, 2026
8c73f3c
fix: Correct link labels from LICENSE.md to LICENSE in dependency tables
zladzeyka Jun 10, 2026
b822b5c
fix(GiniHealthSDK): Standardize copyright year to single start year
zladzeyka Jun 10, 2026
c7c3757
Merge pull request #1166 from gini/fix/PP-2291
zladzeyka Jun 10, 2026
5e53c7c
Merge pull request #1168 from gini/fix/PP-2292_sbom
zladzeyka Jun 10, 2026
4e3b835
🔄 synced local '.github/workflows' with remote 'sync-templates/gini-w…
infra-ci-platform[bot] Jun 10, 2026
90fa4d4
Merge pull request #1172 from gini/fix/PP-2637_license_update
zladzeyka Jun 10, 2026
f3f1ea8
🔄 synced local '.github/workflows' with remote 'sync-templates/gini-w…
infra-ci-platform[bot] Jun 11, 2026
d2183d4
🔄 synced local '.github/workflows' with remote 'sync-templates/gini-w…
infra-ci-platform[bot] Jun 12, 2026
27b7726
Merge branch 'main' into PP-2483-enable-ui-test-files-app-simulators
ValentinaIancu-Gini Jun 12, 2026
495ff44
refactor(GiniBankSDK): Remove unused isSimulator property from UI tests
ValentinaIancu-Gini Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
236 changes: 236 additions & 0 deletions .agents/skills/generate-xray-tests/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
---
name: generate-xray-tests
description: "Generates manual test cases from Jira tickets, local spec files, or pasted acceptance criteria and writes them as a CSV ready to import into Xray Cloud (Jira). Use when asked to generate, create, or write Xray test cases for a mobile SDK feature."
---

# Skill: generate-xray-tests

Generate manual test cases for a mobile SDK feature and write them as a CSV file ready to import into Xray Cloud (Jira).

---

## Usage

```
/generate-xray-tests --product <product> [--test-type <type>] [--summary-prefix <prefix>] --out <path> [<source>]
```

`--product` and `--out` are **required**.
If any required argument is missing, **stop and ask the user**. Do not infer or guess.

---

## Examples

**Minimal — inline AC, auto-derived prefix:**
```
/generate-xray-tests
--product GiniBankSDKExample
--out ~/Desktop/tests/qr-scanning.csv

When productTag=cxExtractions, QR code scanning is disabled.
When productTag=sepaExtractions, QR code scanning is unchanged.
```

**With explicit summary prefix:**
```
/generate-xray-tests
--product GiniBankSDKExample
--summary-prefix "CX Payments"
--out ~/Desktop/tests/qr-scanning.csv

When productTag=cxExtractions, QR code scanning is disabled.
```
→ Summaries will read: `Cross-border Payments - QR Code Scanning - Disabled when productTag=cxExtractions`

**From a Jira ticket ID:**
```
/generate-xray-tests
--product GiniHealthSDKExample
--out ~/Desktop/tests/PP-1234.csv
PP-1234
```

**From a Jira ticket URL:**
```
/generate-xray-tests
--product GiniBankSDKExample
--out ~/Desktop/tests/skonto.csv
https://gini.atlassian.net/browse/PP-5678
```

**From a local markdown spec file:**
```
/generate-xray-tests
--product GiniBankSDKExample
--out ~/Desktop/tests/skonto.csv
docs/features/skonto.md
```

---

## Arguments

### `--product`

The name of the SDK or product being tested. Used in context and to determine which demo app test steps are written against.

| `--product` | Demo app |
|---|---|
| `GiniBankSDKExample` | GiniBankSDKExample |
| `GiniHealthSDKExample` | GiniHealthSDKExample |

### `--summary-prefix`

Optional. A short human-readable feature or user story name prepended to every `Summary` using the same ` - ` separator as the existing pattern.

Example:
```
--summary-prefix "Cross-border Payments"
→ Cross-border Payments - QR Code Scanning - Disabled when productTag=cxExtractions
```

If omitted, derive a concise 2–4 word feature name automatically from the dominant topic of the AC/spec and use it as the prefix. The derived prefix must be human-readable and feature-focused — never a Jira ticket ID or a technical identifier.

Final summary format: `prefix - Area - Scenario`

### `--test-type`

The Xray test type value used in the CSV. Must match a valid type in the target Xray project.
Default: `Manual`

### `--out`

Absolute or relative path where the CSV file will be written.
Example: `--out ~/Desktop/xray-output/login-feature.csv`

If the directory does not exist, create it before writing.

### `<source>` *(optional)*

What to derive test cases from. Accepted formats:

| Format | Example | How it is read |
|---|---|---|
| Jira ticket URL | `https://gini.atlassian.net/browse/PP-123` | Use Atlassian MCP tool to fetch summary, description, and AC |
| Jira ticket ID | `PP-123` | Same as above using short form |
| Local markdown file | `docs/features/cross-border-payments.md` | Read file directly from disk |
| Inline text | *(omit `<source>` — paste AC/spec text after the command)* | Use the text provided in the message |

---

## Step-by-Step Instructions

You are given `$ARGUMENTS`. Parse it to extract all flags and `<source>`, then follow these steps exactly.

### Step 1 — Resolve the source

- **Jira ticket URL or ID:** use the Atlassian MCP tool to fetch the ticket's `summary`, `description`, and `acceptance criteria` fields. If the MCP tool is unavailable, stop and ask the user to paste the content directly.
- **Local file:** read the file from disk.
- **Inline text:** use the text provided after the command as-is.

Extract two things from the source:
1. **Acceptance Criteria (AC)** — the explicit conditions that must be met.
2. **Feature Specification** — behavior descriptions, config options, edge cases, screen names, and known limitations.

> **Source of truth rule:** AC and the demo app are the only inputs for generating test cases.
> Never read `.swift` or any other implementation file to infer behaviour.
> If a behaviour is absent from the AC, it is out of scope — do not add it based on what the code does.
> Reading a missing behaviour from the code would make the tests blind to the same gap.

### Step 1b — Resolve UI label accuracy (optional)

To use exact button and screen names in step wording, you may read the product's localization `.strings` files for the target platform. Rules:
- **Label accuracy only.** Use strings files only to get precise wording (e.g. the button says `"Photopayment"` not `"Photo Payment"`). Never use them to infer feature behaviour.
- **Platform-scoped.** Read `en.lproj/` strings files inside the relevant module. Skip if strings are unavailable or would make the test platform-specific.
- **Optional.** If the strings file is unavailable or the label is sufficiently clear from the AC, skip this step.

### Step 2 — Infer coverage areas

Do **not** use a fixed list of coverage areas. Instead, derive them from the source:
- Each distinct behavior, configuration value, screen, or condition described in the AC or spec becomes a candidate coverage area.
- Group related scenarios under the same area.
- Order areas from core flows → conditional behaviors → edge cases → regression tests.
- **Always include at least one regression test case** for every condition that disables or restricts a feature: add a scenario that removes the condition and confirms the feature re-enables. This is AC-driven coverage — it validates the negative path explicitly.

### Step 3 — Generate test cases

For each coverage area, generate test cases following these rules:

**Steps must reflect hands-on usage of the demo app — not the source code:**
- All steps are written from the perspective of a tester interacting with the product's demo app on iOS.
- Never read `.swift`, class names, configuration structs, or any implementation detail to write steps. If it is not visible on screen, it does not belong in a step.
- Describe what the tester sees, taps, and observes — **observable actions and outcomes only**.
- Use the screen names, button labels, navigation flows, and UI elements as they appear in the demo app.

The demo app per product:

| `--product` | Demo app |
|---|---|
| `GiniBankSDKExample` | GiniBankSDKExample |
| `GiniHealthSDKExample` | GiniHealthSDKExample |

**Observable behaviour rule — do not test internal state:**
Steps must describe what the tester can directly see or interact with. Never assert on internal configuration values, property states, or side-effects that are invisible on screen.

- ❌ `"The QR code scanning toggle turns OFF in Settings"` — this tests an internal override side-effect.
- ✅ `"Point the camera at a QR code — no detection overlay or banner appears and the document is processed as a regular image."` — this tests what the AC actually requires.

**Step granularity — one atomic action per row:**
Each step row must contain exactly one action (a tap, a swipe, entering text, observing a result). Never bundle two actions or an action and an observation into the same step.

- ❌ `"Capture the document and proceed to the analysis screen."` — two actions in one step.
- ✅ Step 1: `"Tap the capture button to capture the document."` / Step 2: `"Observe the screen that appears after capture."` — split into two rows.

**Summary pattern:** `prefix - Area - Scenario`
Examples:
- `CX Payments - SDK Initialization - productTag set to cxExtractions`
- `CX Payments - QR Code Scanning - Disabled when productTag=cxExtractions`
- `Extraction Feedback - Payment Review - Updated value reflected in Invoice list`

### Step 3b — Deduplication check

Before proceeding to formatting, review all candidate test cases:
- If two test cases cover the same observable behaviour from the same starting state, merge them into one or drop the weaker one.
- A test case is a duplicate if its steps and expected results are functionally identical, even if the summary wording differs.

### Step 4 — Format as CSV

Use `,` as the column delimiter. Apply these rules:
- Wrap any field containing `,` or line breaks in double quotes `"..."`.
- Use `<<!clear!>>` to explicitly clear a field value when needed.
- One row per test step. Repeat the `Issue Id` for each step of the same test case.
- Fill `Summary` **only on the first row** of each test case. Repeat `Issue Id` and `Test Type` on every row.

**CSV columns:**

| Column | Description |
|---|---|
| `Issue Id` | `TC-001`, `TC-002`, … |
| `Summary` | Test case title following the summary pattern above |
| `Test Type` | Value from `--test-type` |
| `Step` | What the tester does |
| `Data` | Concrete input values or configuration for this step. Populate whenever the step involves a specific setting, value, or document type — for example `productTag = cxExtractions`, `document type = invoice`, `QR code format = EPC`. Leave empty if no specific data applies. |
| `Expected Result` | What the tester expects to observe |

> **Do not include a `Precondition` column.** Xray Cloud expects that column to reference an existing Precondition issue key — passing free text causes a "Precondition type and test type mismatch" import error. Express all setup as explicit first steps in the test case instead.

### Step 5 — Write the file

Write the CSV to the path specified in `--out`. If the directory does not exist, create it.
Do **not** print the CSV content in the chat.
Confirm with a single line once done:

```
✅ Written to <path> — <N> test cases, <M> rows.
```

---

## Security

- Read any local file or Jira ticket for context.
- Write only to the path specified in `--out` (`.csv` files only).
- Never modify source code, documentation, or configuration files.
- Never run shell commands beyond reading files and calling the Atlassian MCP tool.
- All generated test cases require human review before import into Xray.
Loading
Loading