iOS
Requirements
- Xcode (version 15.4)
- An iPhone 15 Pro simulator (iOS 17.0.1) set up
Setup
-
Clone the repository:
$ git clone https://github.com/bitwarden/ios
-
Install Mint:
$ brew install mint
Alternatively, if you prefer to install Mint without
brew
, clone the Mint repo into a temporary directory and runmake
.$ git clone https://github.com/yonaskolb/Mint.git
$ cd Mint
$ make -
Bootstrap the project:
$ Scripts/bootstrap.sh
Note Because
Scripts/bootstrap.sh
is how the project is generated,bootstrap.sh
will need to be run every time the project configuration or file structure has changed (for example, when files have been added, removed or moved). It is typically best practice to runbootstrap.sh
any time you switch branches or pull down changes.Alternatively, you can create git hooks to automatically execute the
bootstrap.sh
script every time a git hook occurs. To use the git hook scripts already defined in theScripts
directory, copy the scripts to the.git/hooks
directory.$ cp Scripts/post-merge .git/hooks/
$ cp Scripts/post-checkout .git/hooks/
Run the app
- Open the project in Xcode 15.4+.
- Run the app in the Simulator with the
Bitwarden
target.
Running tests
Due to slight snapshot test variations between iOS versions, the test target requires running in an iPhone 15 Pro simulator (iOS 17.0.1).
-
In Xcode's toolbar, select the project and a connected device or simulator.
- The
Generic iOS Device
used for builds will not work for testing.
- The
-
In Xcode's menu bar, select
Product > Test
.- Test results appear in the Debug Area, which can be accessed from
View > Debug Area > Show Debug Area
if not already visible.
- Test results appear in the Debug Area, which can be accessed from
Linting
This project is linted using both SwiftLint and
SwiftFormat. Both tools run in linting mode with
every build of the Bitwarden
target. However, if you would like to have SwiftFormat autocorrect
any issues that are discovered while linting, you can manually run the fix command
mint run swiftformat .
.
Additionally, if you would like SwiftFormat to autocorrect any issues before every commit, you can
use a git hook script. To use the git hook script already defined in the Scripts
directory, copy
the script to the .git/hooks
directory.
$ cp Scripts/pre-commit .git/hooks/