Skip to content

Conversation

@nishant-clevertap
Copy link
Contributor

@nishant-clevertap nishant-clevertap commented May 20, 2025

  • Added accessibility id for InApps elements as per Android for QA automation task.

Summary by CodeRabbit

  • Accessibility Improvements

    • Added accessibility identifiers and enhanced accessibility configurations for key UI elements (such as images, labels, and buttons) across all in-app message layouts, improving support for assistive technologies.
  • UI Updates

    • Updated button styles from "roundedRect" to "system" for a more modern appearance in various in-app message layouts.
    • Adapted certain layouts to support larger device screen sizes and updated Interface Builder metadata for improved compatibility.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 20, 2025

Walkthrough

The changes update multiple XIB resource files for various in-app message view controllers to newer Interface Builder tools and plugin versions. Device attributes such as layout and appearance are now explicitly set. Accessibility identifiers and element flags are added to key UI elements (image views, labels, buttons, close buttons) to enhance accessibility support. Some button types are updated from "roundedRect" to "system." No exported or public code entities are altered.

Changes

File(s) Change Summary
.../CTCoverImageViewControlleripad.xib
.../CTCoverImageViewController
ipadland.xib
.../CTCoverImageViewControlleriphoneland.xib
.../CTCoverImageViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; device elements now include explicit layout and/or appearance attributes; accessibility identifiers and element flags added to background image views and close buttons to improve accessibility metadata.
.../CTCoverViewControlleripad.xib
.../CTCoverViewController
ipadland.xib
.../CTCoverViewControlleriphoneland.xib
.../CTCoverViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; device elements now include explicit layout and/or appearance attributes; accessibility identifiers added to background image views, title labels, message labels, both buttons, and close buttons; button types changed from "roundedRect" to "system" where applicable; minor frame adjustments in landscape iPad version.
.../CTFooterViewControlleripad.xib
.../CTFooterViewController
ipadland.xib
.../CTFooterViewControlleriphoneland.xib
.../CTFooterViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; accessibility identifiers added to image views, title labels, body/message labels, and both buttons; image views marked as accessibility elements. No layout or constraint changes.
.../CTHalfInterstitialImageViewControlleripad.xib
.../CTHalfInterstitialImageViewController
ipadland.xib
.../CTHalfInterstitialImageViewController~iphoneland.xib
Updated Interface Builder tools/plugin versions; device elements updated with explicit layout and appearance; accessibility identifiers and element flags added to background image views and close buttons; canvas location point added in some files. No layout or control flow changes.
.../CTHalfInterstitialImageViewController~iphoneport.xib Updated to target a larger device screen; root view and subviews resized/repositioned; accessibility identifiers and element flags added to background image view and close button; dismiss button repositioned and resized.
.../CTHalfInterstitialViewControlleripad.xib
.../CTHalfInterstitialViewController
ipadland.xib
.../CTHalfInterstitialViewControlleriphoneland.xib
.../CTHalfInterstitialViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; device elements updated; accessibility identifiers and element flags added to background image views, title labels, message labels, both buttons, and close buttons; button types changed from "roundedRect" to "system"; root view and subviews resized/repositioned for larger devices where applicable.
.../CTHeaderViewControlleripad.xib
.../CTHeaderViewController
ipadland.xib
.../CTHeaderViewControlleriphoneland.xib
.../CTHeaderViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; accessibility identifiers and element flags added to image views, title labels, message labels, and both buttons. No layout or constraint changes.
.../CTInterstitialImageViewControlleripad.xib
.../CTInterstitialImageViewController
ipadland.xib
.../CTInterstitialImageViewControlleriphoneland.xib
.../CTInterstitialImageViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; device elements updated; accessibility identifiers and element flags added to background image views and close buttons; canvas location point added in some files. No layout or control flow changes.
.../CTInterstitialViewControlleripad.xib
.../CTInterstitialViewController
ipadland.xib
.../CTInterstitialViewControlleriphoneland.xib
.../CTInterstitialViewController
iphoneport.xib
Updated Interface Builder tools/plugin versions; device elements updated; accessibility identifiers and element flags added to background image views, title labels, message labels, both buttons, and close buttons; button types changed from "roundedRect" to "system"; canvas location point added in some files. No layout or control flow changes.

Sequence Diagram(s)

Not applicable—these changes involve only resource file metadata, accessibility attributes, and minor layout adjustments, without introducing or modifying control flow or feature logic.

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (10)
CleverTapSDK/InApps/resources/CTInterstitialViewController~iphoneport.xib (1)

71-73: Update button style and add accessibility to first button
Switching buttonType to system modernizes the button appearance, and identifier="inapp_btn1" ensures it can be reliably accessed by UI tests.

Consider extracting a common IB component for in-app buttons to reduce duplication.

CleverTapSDK/InApps/resources/CTInterstitialViewController~ipad.xib (1)

139-140: Close button identifier missing element flag and traits
The close button has identifier="inapp_close_btn" but lacks <accessibilityTraits> and <bool key="isElement" value="YES"/>.

Consider adding these nested tags to maintain consistency with other XIBs and ensure the button is treated as an accessibility element.

CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~iphoneport.xib (4)

37-38: Optional: specify image accessibilityTrait
Consider adding:

<accessibilityTraits key="traits" image="YES"/>

inside the accessibilityConfiguration to explicitly mark this as an image element.


51-52: Consistency: add isElement flag for title label
You set identifier="inapp_title", but it’s missing <bool key="isElement" value="YES"/>. Adding it ensures the label is recognized as an accessibility element.


58-59: Consistency: add isElement flag for message label
The identifier="inapp_message" is in place—please also include <bool key="isElement" value="YES"/> for explicit accessibility.


68-69: Consistency: add isElement flag for buttons
Both buttons have identifiers (inapp_btn1 / inapp_btn2) but no explicit <bool key="isElement" value="YES"/>. Adding it maintains parity with the close button.

Also applies to: 80-81

CleverTapSDK/InApps/resources/CTInterstitialViewController~ipadland.xib (4)

38-38: Consistency: add isElement flag for buttons
To mirror the close button configuration, add <bool key="isElement" value="YES"/> inside each button’s accessibilityConfiguration.

Also applies to: 50-50


79-79: Consistency: add isElement flag for title label
The identifier="inapp_title" is set—please follow up with <bool key="isElement" value="YES"/> for explicit accessibility.


86-86: Consistency: add isElement flag for message label
After identifier="inapp_message", include <bool key="isElement" value="YES"/> to ensure the message label is treated as an accessibility element.


99-101: Optional: specify image accessibilityTrait
For completeness, you may insert:

<accessibilityTraits key="traits" image="YES"/>

within the accessibilityConfiguration.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 35e111a and a9bb68c.

📒 Files selected for processing (32)
  • CleverTapSDK/InApps/resources/CTCoverImageViewController~ipad.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTCoverImageViewController~ipadland.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTCoverImageViewController~iphoneland.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTCoverImageViewController~iphoneport.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTCoverViewController~ipad.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTCoverViewController~ipadland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTCoverViewController~iphoneland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTCoverViewController~iphoneport.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTFooterViewController~ipad.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTFooterViewController~ipadland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTFooterViewController~iphoneland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTFooterViewController~iphoneport.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~ipad.xib (4 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~ipadland.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~iphoneland.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~iphoneport.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~ipad.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~ipadland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~iphoneland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~iphoneport.xib (4 hunks)
  • CleverTapSDK/InApps/resources/CTHeaderViewController~ipad.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHeaderViewController~ipadland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHeaderViewController~iphoneland.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTHeaderViewController~iphoneport.xib (5 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialImageViewController~ipad.xib (3 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialImageViewController~ipadland.xib (4 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialImageViewController~iphoneland.xib (4 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialImageViewController~iphoneport.xib (4 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialViewController~ipad.xib (7 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialViewController~ipadland.xib (6 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialViewController~iphoneland.xib (6 hunks)
  • CleverTapSDK/InApps/resources/CTInterstitialViewController~iphoneport.xib (6 hunks)
🔇 Additional comments (195)
CleverTapSDK/InApps/resources/CTHeaderViewController~iphoneport.xib (6)

2-2: Confirm Interface Builder Version Updates
The XIB header was updated (toolsVersion="23504") and the CocoaTouch plugin bumped to 23506. Verify compatibility with your minimum supported Xcode version and CI/macOS build images to avoid Interface Builder warnings or failures.

Also applies to: 6-6


37-39: Accessibility: Add identifier for header icon
The imageView now includes identifier="inapp_icon" and is marked as an accessibility element. This is exactly what's needed for UI tests and VoiceOver support.


59-59: Accessibility: Add identifier for title label
The title label now has identifier="inapp_title", enabling reliable targeting in automation and improved screen-reader clarity.


66-66: Accessibility: Add identifier for message label
The message label now declares identifier="inapp_message", which is great for consistent automated validation and assistive tech.


89-89: Accessibility: Add identifier for first button
The first button is now identified by inapp_btn1. This aligns with QA requirements for element lookup.


109-109: Accessibility: Add identifier for second button
The second button has been assigned identifier="inapp_btn2", maintaining consistent naming across all InApp components.

CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~ipadland.xib (3)

2-3: Confirm IB Tools & Device Layout
XIB header and plugin version were updated, and the <device> now specifies layout="fullscreen" with appearance="light". Ensure your Xcode toolchain supports these IB settings and that the fullscreen layout renders correctly on all target iPad devices.

Also applies to: 6-6


28-30: Accessibility: Identify background image
Added identifier="inapp_bg_img" and marked the background image view as an accessibility element. This greatly aids UI automation and VoiceOver navigation.


45-48: Accessibility: Add identifier to close button
Close button now has identifier="inapp_close_btn", proper accessibilityTraits="button", and isElement="YES". Perfect for both assistive tech and automated tests.

CleverTapSDK/InApps/resources/CTFooterViewController~iphoneland.xib (6)

2-2: Verify IB Tools & Plugin Version
The toolsVersion and plugin version were bumped. Confirm that your Xcode environment and CI workflows can handle these Interface Builder settings without warnings.

Also applies to: 6-6


37-39: Accessibility: Icon identifier
The footer’s imageView now includes identifier="inapp_icon" and is flagged as an element—this is exactly what QA automation needs.


59-59: Accessibility: Title label
Added identifier="inapp_title". This improves accessibility labeling and test script reliability.


66-66: Accessibility: Message label
Added identifier="inapp_message". Good for consistent element discovery and VoiceOver.


89-89: Accessibility: First button
First button now has identifier="inapp_btn1". This matches other InApp components and aids in automation.


109-109: Accessibility: Second button
Second button declared with identifier="inapp_btn2", ensuring uniform naming and testability.

CleverTapSDK/InApps/resources/CTFooterViewController~iphoneport.xib (6)

2-2: Confirm IB Header & Plugin Compatibility
ToolsVersion and plugin have been updated. Verify that these values are supported by the project's Xcode targets and CI images.

Also applies to: 6-6


37-39: Accessibility: Icon configuration
The imageView now has identifier="inapp_icon" and is marked as an accessibility element—necessary for reliable UI testing.


59-59: Accessibility: Title label identifier
Title label now carries identifier="inapp_title", streamlining accessibility audits and automation scripts.


66-66: Accessibility: Body label identifier
Body label includes identifier="inapp_message", ensuring consistent element targeting.


89-89: Accessibility: Button 1 identifier
First button has been tagged with identifier="inapp_btn1", matching other variants.


109-109: Accessibility: Button 2 identifier
Second button now defines identifier="inapp_btn2", maintaining naming consistency across device layouts.

CleverTapSDK/InApps/resources/CTCoverImageViewController~iphoneland.xib (3)

2-3: Verify Interface Builder and Device Settings
The header, plugin version, and device attributes (orientation="landscape", appearance="light") were updated. Ensure compatibility with your Xcode version and confirm the visual layout on target devices.

Also applies to: 6-6


31-33: Accessibility: Background image identifier
Added identifier="inapp_bg_img" and set isElement="YES" on the cover image view—this is crucial for screen readers and automation.


47-50: Accessibility: Close button identifier
Close button now has identifier="inapp_close_btn", accessibilityTraits="button", and isElement="YES". Perfect for both VoiceOver and automated testing.

CleverTapSDK/InApps/resources/CTFooterViewController~ipad.xib (6)

2-6: Validate Interface Builder version update.
The toolsVersion="23504" and plugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin version 23506 reflect a newer Xcode format. Please confirm the team’s minimum Xcode version and CI environment support these settings to avoid integration issues.


37-39: Add accessibility identifier to icon image view.
Assigning identifier="inapp_icon" and isElement="YES" ensures the icon is discoverable by UI tests and assistive technologies.


59-59: Add accessibility identifier to title label.
Setting identifier="inapp_title" provides a consistent handle for accessibility frameworks and test scripts.


66-66: Add accessibility identifier to body label.
The inapp_message identifier enables reliable identification of the message text for automation and screen readers.


89-89: Add accessibility identifier to first button.
Identifier inapp_btn1 improves test automation and accessibility support for the primary action.


109-109: Add accessibility identifier to second button.
Identifier inapp_btn2 ensures consistency in locating the secondary action element across InApp screens.

CleverTapSDK/InApps/resources/CTCoverViewController~ipad.xib (8)

2-6: Validate Interface Builder version update.
The updated toolsVersion="23504" and plugin version="23506" require at least Xcode 11+. Verify that all developers and CI machines use a compatible Xcode version.


37-39: Add accessibility identifier to background image.
Assigning identifier="inapp_bg_img" with isElement="YES" makes the cover’s background image accessible and testable.


64-64: Add accessibility identifier to title label.
The inapp_title identifier standardizes title label lookup in automation and assists screen readers.


71-71: Add accessibility identifier to message label.
Identifier inapp_message ensures consistent access to the message content.


79-79: Update button type to system.
Changing buttonType="system" modernizes the UI control. Verify visually that this does not alter the intended style.


81-81: Add accessibility identifier to first main button.
Identifier inapp_btn1 and isElement="YES" facilitate automated taps and a11y navigation.


91-91: Add accessibility identifier to second main button.
inapp_btn2 is consistently named with other InApp variants, aiding maintainability.


157-157: Add accessibility identifier to close button.
Setting identifier="inapp_close_btn" marks the dismiss control for UI tests and assistive tech.

CleverTapSDK/InApps/resources/CTHeaderViewController~iphoneland.xib (6)

2-6: Validate Interface Builder version update.
The XIB’s toolsVersion="23504" and plugin version="23506" should match the project’s minimum Xcode. Confirm compatibility in CI and developer environments.


37-39: Add accessibility identifier to header icon.
identifier="inapp_icon" and isElement="YES" ensure the header icon is recognized by accessibility tools and test scripts.


59-59: Add accessibility identifier to title label.
Using inapp_title maintains consistency with other InApp headers for automated UI checks.


66-66: Add accessibility identifier to message label.
The inapp_message identifier improves both screen reader support and test automation stability.


89-89: Add accessibility identifier to first button.
Identifier inapp_btn1 and isElement="YES" allow reliable element interaction in automation.


109-109: Add accessibility identifier to second button.
inapp_btn2 completes the button accessibility scheme across InApp headers.

CleverTapSDK/InApps/resources/CTCoverImageViewController~iphoneport.xib (3)

2-6: Validate Interface Builder version update.
Confirm toolsVersion="23504" and plugin version="23506" are supported by your project’s Xcode version to prevent resource loading issues.


31-33: Add accessibility identifier to cover image.
identifier="inapp_bg_img" and isElement="YES" make the cover image accessible for both assistive tech and UI tests.


47-50: Add accessibility configuration to close button.
Marking identifier="inapp_close_btn" with isElement="YES" and proper traits ensures dismissal control is visible to screen readers and UI automation.

CleverTapSDK/InApps/resources/CTInterstitialImageViewController~ipad.xib (3)

2-6: Validate Interface Builder version update.
Ensure toolsVersion="23504" and plugin version="23506" are compatible with the project’s Xcode toolchain in CI and developer environments.


31-33: Add accessibility identifier to interstitial background image.
identifier="inapp_bg_img" with isElement="YES" allows automated tests and screen readers to locate the interstitial graphic.


57-60: Add accessibility configuration to close button.
identifier="inapp_close_btn" plus isElement="YES" and button traits facilitate reliable discovery and interaction in UI tests and assistive tools.

CleverTapSDK/InApps/resources/CTInterstitialImageViewController~iphoneport.xib (5)

2-3: Bump Interface Builder document version and set explicit appearance
The update to toolsVersion and addition of appearance="light" ensure consistency with the rest of the InApps XIBs and explicit light‐mode rendering.


6-6: Upgrade Interface Builder plugin version
Aligns the plugIn version with the new Xcode runtime and ensures compatibility with the latest IB features.


31-33: Add accessibility identifier and element flag to background image
identifier="inapp_bg_img" and isElement="YES" enable automated UI tests to reliably target the background image view.


58-60: Add accessibility identifier and element flag to close button
identifier="inapp_close_btn" and isElement="YES" make the dismiss button discoverable for accessibility and automation.


79-79: Include canvasLocation metadata
Specifies the view’s position in Interface Builder for easier editing; no impact on runtime.

CleverTapSDK/InApps/resources/CTFooterViewController~ipadland.xib (8)

2-2: Update XIB document version
Bumps the document to the newer Interface Builder format in line with other InApps resources.


6-6: Bump Interface Builder plugin version
Ensures the file uses the latest CocoaTouch IB plugin, matching the rest of the SDK.


37-39: Add accessibility identifier to icon image view
identifier="inapp_icon" and isElement="YES" improve automation targeting for the footer icon.


59-59: Add accessibility identifier to title label
identifier="inapp_title" makes the title label available for UI tests and screen readers.


66-66: Add accessibility identifier to body label
identifier="inapp_message" ensures the message text can be validated in automated tests.


89-89: Add accessibility identifier to first button
identifier="inapp_btn1" enables reliable selection of the primary action button.


109-109: Add accessibility identifier to second button
identifier="inapp_btn2" ensures the secondary action button is accessible to automation and a11y.


166-166: Include canvasLocation metadata
Provides a fixed canvas position in IB for faster visual editing; no effect at runtime.

CleverTapSDK/InApps/resources/CTCoverImageViewController~ipad.xib (5)

2-2: Bump XIB document version
Updates to the latest Interface Builder format, maintaining consistency across InApps resources.


6-6: Upgrade Interface Builder plugin version
Keeps the CocoaTouch plugin in sync with Xcode’s IB runtime version.


31-33: Add accessibility identifier to cover background image
identifier="inapp_bg_img" with isElement="YES" allows automation to detect and interact with the image view.


56-59: Add accessibility identifier to dismiss button
identifier="inapp_close_btn" and isElement="YES" ensure the close action is exposed for UI tests and assistive tech.


81-81: Include canvasLocation metadata
Defines the view’s IB canvas coordinates for developer convenience without affecting runtime behavior.

CleverTapSDK/InApps/resources/CTCoverImageViewController~ipadland.xib (5)

2-2: Update XIB to latest document version
Brings the file in line with the new IB format used by all InApps variants.


6-6: Upgrade IB plugin version
Ensures compatibility with the updated Interface Builder plugin for CocoaTouch.


31-33: Add accessibility identifier to cover background image
identifier="inapp_bg_img" + isElement="YES" supports consistent UI automation across all cover variants.


47-49: Add accessibility identifier to dismiss button
identifier="inapp_close_btn" with element flag ensures the close control is automation-accessible.


79-79: Include canvasLocation metadata
Pinpoints the view’s position in IB for maintainers; no runtime impact.

CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~iphoneland.xib (11)

2-3: Bump document and set explicit appearance
Updates toolsVersion and adds appearance="light" to align with other landscape InApps files.


6-6: Upgrade Interface Builder plugin version
Keeps the IB plugin version in sync with the rest of the InApps resource files.


37-39: Add accessibility identifier to interstitial background image
identifier="inapp_bg_img" and isElement="YES" make the background element testable and screen‐reader friendly.


52-52: Add accessibility identifier to title label
identifier="inapp_title" supports automated and assistive tech validation of the header text.


59-59: Add accessibility identifier to message label
identifier="inapp_message" ensures the body text is accessible for testing and a11y.


67-67: Update first button to system style
Changing buttonType to system modernizes the button appearance and aligns with platform conventions.


69-69: Add accessibility identifier to first button
identifier="inapp_btn1" exposes the primary CTA to automation frameworks.


79-79: Update second button to system style
Aligns the secondary action button with iOS design standards by using the system type.


81-81: Add accessibility identifier to second button
identifier="inapp_btn2" ensures consistent targeting in tests and screen readers.


130-132: Add accessibility identifier and element flag to close button
identifier="inapp_close_btn" with isElement="YES" makes the dismiss control discoverable for UI automation and accessibility.


153-153: Include canvasLocation metadata
Specifies the X/Y coordinates in IB, facilitating layout adjustments by developers.

CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~ipad.xib (8)

2-3: Upgrade Interface Builder document version and tooling
The toolsVersion="23504" along with explicit layout="fullscreen" and appearance="light" bring this XIB up to date. Ensure your CI and local Xcode installations support these settings to avoid unexpected merge conflicts or rendering issues.


6-6: Update Interface Builder plugin version
Bumping the IBCocoaTouchPlugin to version 23506 aligns with the document version. Confirm that this plugin version is available in your Xcode environment to prevent recreation of the XIB.


37-39: Add accessibility identifier to background image
Marking the imageView as an accessibility element with identifier="inapp_bg_img" is perfect for QA automation and matches the Android SDK convention.


52-52: Add accessibility identifier to title label
Giving the titleLabel the ID inapp_title ensures consistent element identification across in-app messages.


59-59: Add accessibility identifier to message label
Tagging the body label with inapp_message improves reliability of UI tests by avoiding reliance on text content.


67-70: Standardize first action button and add accessibility ID
Switching to buttonType="system" and assigning inapp_btn1 enhances consistency and testability.


78-81: Standardize second action button and add accessibility ID
The second button now matches style and is tagged inapp_btn2. Great for cross-platform parity.


128-131: Enhance close button accessibility
Adding identifier="inapp_close_btn", setting button traits, and isElement="YES" makes the close control fully discoverable for VoiceOver and UI tests.

CleverTapSDK/InApps/resources/CTInterstitialViewController~iphoneland.xib (8)

2-3: Upgrade document & device appearance settings
Explicitly setting appearance="light" and updating the document version ensures consistency. Verify that older iOS versions and Dark Mode fallbacks render correctly in this landscape layout.


6-6: Synchronize IB plugin version
The plugin bump to 23506 matches other XIBs. Ensure your Xcode build agents have this plugin to avoid unintended XIB regeneration.


36-39: Standardize first button style & add accessibility ID
Changing to buttonType="system" and adding identifier="inapp_btn1" aligns styling with other in-apps and improves automation targeting.


48-51: Standardize second button style & add accessibility ID
The second action button now has system style and inapp_btn2 for consistent theming and test hooks.


79-79: Add accessibility ID to title label
Assigning inapp_title to the title label makes it easily locatable in UI tests without string matching.


86-86: Add accessibility ID to message label
Tagging the message label with inapp_message enhances reliability of automated tests.


99-101: Mark background image as accessibility element
Adding identifier="inapp_bg_img" and isElement="YES" to the imageView ensures it's exposed to UI automation frameworks.


137-139: Enhance close button accessibility
The close control now has inapp_close_btn with button traits and isElement="YES", making it fully accessible to assistive technologies and UI tests.

CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~ipadland.xib (9)

2-3: Update XIB document & device to iPad landscape
The toolsVersion="23504" plus explicit layout="fullscreen" and appearance="light" match your other interface files. Please verify compatibility with your minimum Xcode version.


6-6: Align IB plugin version
Bumping to plugIn version="23506" aligns with the document schema. Ensure your build environment recognizes this plugin.


37-39: Add accessibility ID to background image
Tagging the imageView with inapp_bg_img and marking it as an element is crucial for consistent QA automation.


52-52: Add accessibility ID to title label
Giving the title inapp_title ensures straightforward element lookup in tests.


59-59: Add accessibility ID to message label
Setting inapp_message on the message label empowers automated flows without fragility.


67-70: Style first button & add accessibility ID
Updating to buttonType="system" and inapp_btn1 improves both appearance and test coverage.


79-82: Style second button & add accessibility ID
Consistent system style and inapp_btn2 locking ensure uniform behavior across all views.


130-133: Enhance close button accessibility
Close button now has inapp_close_btn, accessibilityTraits, and isElement="YES". This makes it reliably detectable by VoiceOver and UI tests.


152-152: Canvas location metadata
The canvasLocation entry only affects Interface Builder’s UI layout. It can be ignored at runtime.

CleverTapSDK/InApps/resources/CTCoverViewController~ipadland.xib (10)

2-3: Upgrade IB document & device settings
Updating to toolsVersion="23504" with layout="fullscreen" and appearance="light" is consistent. Verify your Xcode version supports these attributes.


6-6: Synchronize IB plugin version
The plugin bump to 23506 should match your Xcode environment. Confirm no merge conflicts arise when Xcode regenerates this XIB.


26-33: Adjust container frame sizes
Multiple <rect> dimensions were updated to 1210×834 to support larger screen layouts. Ensure constraints still hold at runtime and update any UI snapshots accordingly.


37-39: Add accessibility ID to background image
Marking the background imageView as inapp_bg_img with isElement="YES" is key for UI automation.


51-53: Add accessibility ID to title label
The title label now has inapp_title. This ensures stable element targeting.


58-60: Add accessibility ID to message label
Tagging inapp_message on the message label keeps consistency across in-app screens.


67-70: Standardize first button & add accessibility ID
Switching the first button to system style with inapp_btn1 improves both look and test integration.


79-82: Standardize second button & add accessibility ID
Second button now matches style and is tagged inapp_btn2, aligning with the rest of the SDK.


109-114: Enhance close button accessibility
Close button now uses inapp_close_btn, accessibilityTraits, and isElement="YES", making it fully accessible.


152-152: Note: Canvas Location
canvasLocation is only for Interface Builder positioning and doesn’t impact app behavior.

CleverTapSDK/InApps/resources/CTHeaderViewController~ipad.xib (7)

2-2: Update XIB document version
Switching to toolsVersion="23504" standardizes this file with the rest. Verify no regressions occur in older Xcode installations.


6-6: Upgrade IB plugin version
Aligning the IBCocoaTouchPlugin to 23506 ensures consistency. Double-check your build pipeline for plugin availability.


37-39: Add accessibility ID to icon image
Marking the header icon as inapp_icon with isElement="YES" improves both VoiceOver support and test automation.


59-59: Add accessibility ID to title label
The title label’s inapp_title identifier ensures reliable targeting in tests and assistive tech.


66-66: Add accessibility ID to message label
Tagging the message label as inapp_message aids automated validation without relying on static text.


89-89: Add accessibility ID to first header button
Setting inapp_btn1 on the first button ensures consistent identification across different in-app components.


109-109: Add accessibility ID to second header button
The second button now carries inapp_btn2. This matches other view controllers and streamlines automation.

CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~ipad.xib (6)

2-2: Document toolsVersion updated
Updating to Interface Builder toolsVersion 23504 is expected to keep files in sync with the latest Xcode.


3-3: Explicitly set layout and appearance
Specifying layout="fullscreen" and appearance="light" ensures consistent rendering and theming for iPad portrait.


6-6: PlugIn version bump
Upgrading the IBCocoaTouchPlugin version to 23506 aligns with the updated Interface Builder tools.


31-33: Add accessibility identifier for background image view
Adding identifier="inapp_bg_img" and marking it as an accessibility element improves test automation and accessibility support, matching Android.


56-56: Add accessibility identifier for close button
Introducing identifier="inapp_close_btn" on the dismiss button facilitates UI testing and accessibility navigation.


77-77: Canvas location metadata
This tag only affects the Interface Builder canvas and does not impact runtime behavior.

CleverTapSDK/InApps/resources/CTHeaderViewController~ipadland.xib (7)

2-2: (No significant runtime effect changing document toolsVersion)


6-6: (PlugIn version bump matches the Interface Builder upgrade)


37-39: Mark icon image view as an accessibility element
Adding identifier="inapp_icon" and isElement="YES" on the imageView improves accessibility discovery and aligns with Android SDK.


59-59: Add accessibility identifier to title label
Applying identifier="inapp_title" ensures the title label can be targeted in UI automation and by assistive technologies.


66-66: Add accessibility identifier to message label
Introducing identifier="inapp_message" enhances testability and accessibility of in-app message content.


89-89: Add accessibility identifier to first button
Defining identifier="inapp_btn1" on the first button facilitates UI tests and improves semantics for screen readers.


109-109: Add accessibility identifier to second button
Setting identifier="inapp_btn2" on the second button aligns with automation and accessibility goals.

CleverTapSDK/InApps/resources/CTInterstitialViewController~iphoneport.xib (7)

2-3: Interface Builder metadata updated
Upgrading toolsVersion and setting appearance="light" ensures compatibility with current Xcode releases and consistent light mode rendering.


6-6: PlugIn version upgrade
Bumping the IBCocoaTouchPlugin to version 23506 matches the updated Interface Builder tools version.


42-44: Add accessibility identifier for background image view
Including identifier="inapp_bg_img" and isElement="YES" on the imageView improves accessibility and supports automated UI testing.


85-85: Add accessibility identifier to second button
Adding identifier="inapp_btn2" enables reliable selection in UI tests and improved screen reader announcements.


114-114: Add accessibility identifier to message label
Defining identifier="inapp_message" ensures that the message content is exposed to accessibility frameworks and automation scripts.


142-144: Add accessibility identifier for close button
Setting identifier="inapp_close_btn" and isElement="YES" on the close button supports assistive technologies and testing.


163-163: Canvas location metadata
This change only affects Interface Builder’s visual canvas and has no impact on runtime behavior.

CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~iphoneport.xib (5)

2-3: (Document metadata bump is routine)


6-6: (PlugIn version upgrade aligns with Interface Builder update)


20-24: Adjust layout for 6.12-inch display
Updating the root view (393×852) and container frames (333×432.7) ensures the half-interstitial fits larger devices without clipping.


27-30: Add accessibility identifier to background image view
Introducing identifier="inapp_bg_img" and marking the image view as an accessibility element facilitates automation and screen reader support.


43-47: Add accessibility identifier to dismiss button
Adding identifier="inapp_close_btn" with isElement="YES" on the dismiss button improves accessibility and consistency across InApps components.

CleverTapSDK/InApps/resources/CTInterstitialImageViewController~ipadland.xib (5)

2-3: (Updating document metadata to match Xcode version)


6-6: (PlugIn version bump is expected with Interface Builder upgrade)


31-34: Add accessibility identifier to background image view
Setting identifier="inapp_bg_img" and isElement="YES" on the imageView ensures consistent accessibility handling and test locator support.


58-61: Add accessibility identifier to close button
Including identifier="inapp_close_btn" and marking it as an accessibility element aligns with QA automation needs and accessibility guidelines.


79-79: (Canvas location update does not affect runtime)

CleverTapSDK/InApps/resources/CTInterstitialImageViewController~iphoneland.xib (4)

2-6: Interface Builder document and plugin version updated
The bump in toolsVersion and plugin version="23506" matches our Xcode upgrade and stays consistent with other XIBs.


31-34: Accessibility identifier and element flag added to background image
Adding identifier="inapp_bg_img" along with <bool key="isElement" value="YES"/> ensures the image view is exposed for UI automation.


58-61: Accessibility identifier and element flag added to close button
Marking the close button with identifier="inapp_close_btn" and isElement="YES" improves consistency for QA tests.


79-79: Canvas location metadata inserted
The added <point key="canvasLocation" .../> is purely design-time metadata and has no effect at runtime.

CleverTapSDK/InApps/resources/CTHalfInterstitialImageViewController~iphoneland.xib (3)

2-6: Updated Interface Builder document and plugin versions
The new toolsVersion and plugin version reflect the Xcode upgrade and align with other resource files.


28-30: Accessibility identifier flagged for background image
The <accessibility> entry with identifier="inapp_bg_img" and isElement="YES" correctly exposes the image for automated testing.


45-48: Accessibility identifier and traits for dismiss button
Adding identifier="inapp_close_btn" with <accessibilityTraits key="traits" button="YES"/> and isElement="YES" makes the close control testable.

CleverTapSDK/InApps/resources/CTCoverViewController~iphoneland.xib (8)

2-6: Document metadata updated
The XIB’s toolsVersion, plugin version, and appearance="light" attribute are consistent with the SDK’s updated styling.


37-40: Accessibility identifier for background image view
identifier="inapp_bg_img" with isElement="YES" correctly flags the background image for QA automation.


52-52: Accessibility identifier for title label
Adding identifier="inapp_title" enables automated scripts to locate the title.


59-59: Accessibility identifier for message label
The identifier="inapp_message" entry improves test coverage for the message text.


67-70: Button type updated and identifier added to first button
Changing buttonType="system" modernizes the UI, and identifier="inapp_btn1" exposes it for tests.


79-82: Identifier added to second button
identifier="inapp_btn2" is applied consistently to the second action button.


111-114: Accessibility identifier and traits on close button
Marking the close button with identifier="inapp_close_btn", button="YES", and isElement="YES" supports automation hooks.


152-152: Canvas location metadata added
The <point key="canvasLocation" .../> tag is design-time only and safe to include.

CleverTapSDK/InApps/resources/CTCoverViewController~iphoneport.xib (8)

2-6: Document and plugin version bump
Updated XIB metadata (toolsVersion, plugin version, appearance="light") is in line with other files.


37-40: Background image view accessibility identifier
identifier="inapp_bg_img" with isElement="YES" ensures the image is accessible to test scripts.


52-52: Title label accessibility identifier
The identifier="inapp_title" tag allows automated frameworks to find the title.


59-59: Message label accessibility identifier
Adding identifier="inapp_message" improves the test automation for message content.


67-70: First button accessibility identifier
identifier="inapp_btn1" on the system-type button correctly flags it for UI tests.


79-82: Second button accessibility identifier
Consistent use of identifier="inapp_btn2" exposes the second button for automation.


111-114: Close button accessibility identifier
identifier="inapp_close_btn" is applied, making the dismiss control testable.


153-153: Canvas location metadata
Including <point key="canvasLocation" .../> has no runtime side effects.

CleverTapSDK/InApps/resources/CTInterstitialViewController~ipad.xib (7)

2-6: XIB metadata updated for fullscreen iPad layout
The new layout="fullscreen", appearance="light", and updated plugin version align with design standards.


35-38: Title label accessibility identifier
Adding identifier="inapp_title" enables reliable UI test targeting of the title.


49-52: Background image view accessibility traits
identifier="inapp_bg_img" with image traits and isElement="YES" ensures proper exposure in automation.


69-70: Message label accessibility identifier
identifier="inapp_message" makes the message accessible for test assertions.


77-80: First button accessibility identifier
Applying identifier="inapp_btn1" on the system button supports QA automation.


89-92: Second button accessibility identifier
identifier="inapp_btn2" consistently flags the second action button for tests.


159-159: Canvas location metadata added
The <point key="canvasLocation" .../> entry is design-time only and safe.

CleverTapSDK/InApps/resources/CTHalfInterstitialViewController~iphoneport.xib (4)

2-3: IB document modernization approved
Updated toolsVersion, plugin version, and device identifier to support newer iPhone sizes and Xcode tooling.

Also applies to: 6-6


26-26: Frame adjustments for larger screen
Root view and container frames have been resized for the new device dimensions. These changes align with Auto Layout previews and won’t affect runtime constraints.

Also applies to: 30-30, 33-33


36-38: Accessibility: background image configured
Nice addition of accessibilityIdentifier="inapp_bg_img" and explicit isElement="YES" on the imageView.


130-133: Accessibility: close button configured correctly
The close button now has identifier="inapp_close_btn", proper accessibilityTraits="button", and isElement="YES". This aligns with best practices for tappable elements.

CleverTapSDK/InApps/resources/CTInterstitialViewController~ipadland.xib (5)

2-3: IB document modernization approved
Updated toolsVersion, plugin version, and device configuration to landscape fullscreen on iPad.

Also applies to: 6-6


36-36: Button type updated to “system”
Both primary and secondary buttons have been migrated from deprecated roundedRect to system. This modernizes the UI and improves consistency.

Also applies to: 48-48


38-38: Accessibility: button identifiers added
Good addition of inapp_btn1 and inapp_btn2 identifiers. These will support UI automation on iPad interstitials.

Also applies to: 50-50


99-101: Accessibility: background image configured
Great job adding identifier="inapp_bg_img" and isElement="YES" on the imageView.


137-139: Accessibility: close button configured correctly
The close button now has identifier="inapp_close_btn", accessibilityTraits="button", and isElement="YES". Perfect for tappable controls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants