Contain Paystack Inline checkout inside Ladill sheet mount.
Deploy Ladill POS / deploy (push) Successful in 1m20s

Redirect Paystack iframes into the bottomsheet/modal body (where the spinner
is) instead of allowing a second full-viewport Paystack modal on top. Hide
Paystack background dimmer; keep Ladill header/close chrome.
This commit is contained in:
isaacclad
2026-07-21 22:32:01 +00:00
parent 2c763cf46a
commit a95f84e0e0
2 changed files with 269 additions and 35 deletions
@@ -30,14 +30,18 @@ class ResponsivePaystackSheetTest extends TestCase
$this->assertStringContainsString("\$watch('showSheet'", $html);
$this->assertStringContainsString('js.paystack.co/v2/inline.js', $html);
$this->assertStringContainsString('Starting secure checkout', $html);
$this->assertStringContainsString('Complete payment on this screen', $html);
$this->assertStringContainsString('not in a separate browser', $html);
$this->assertStringContainsString('items-end justify-center md:items-center', $html);
// Cross-origin checkout needs fullscreen delegated on the iframe + parent policy.
$this->assertStringContainsString('ensurePaystackIframePermissions', $html);
$this->assertStringContainsString('installIframeAllowHook', $html);
$this->assertStringContainsString('fullscreen *', $html);
$this->assertStringContainsString("attributeFilter: ['allow', 'src', 'id', 'name']", $html);
$this->assertStringContainsString("attributeFilter: ['allow', 'src', 'id', 'name', 'style', 'class']", $html);
// Paystack must load inside the Ladill sheet mount — not a second full-screen modal.
$this->assertStringContainsString('data-ladill-pay-mount', $html);
$this->assertStringContainsString('setPaystackContainActive', $html);
$this->assertStringContainsString('installAppendHook', $html);
$this->assertStringContainsString('ladill-pay-inline-active', $html);
// Must not push Paystack to a separate browser as the primary path.
$this->assertStringNotContainsString('Continue to Paystack', $html);
$this->assertStringNotContainsString('window.open(', $html);