rami-a 615a0e4061
Snapshot Testing Proof of Concept (#5887)
* Snapshot Testing Proof of Concept (#5754)

### The problem
We currently do not have UI tests on a component level. Integrating snapshot tests would allow us to have peace of mind with each PR that it isn't going to introduce any changes to the UI unless its intended to.

### The solution
* Integrate `ios-snapshot-test-case` pod to handle generating and diffing images of components. 
* Integrate `git-lfs` to handle storage of the goldens.

This PR creates one test to showcase the ability to do snapshot tests. Upon merging this PR, you must install git-lfs in order to properly have the images pulled down. The 3 steps to do this:
1. `brew install git-lfs`
2. `git lfs install`
3. `git lfs pull`

Additionally, the golden is generated using an iOS 11 simulator at 2x scale so that the kokoro jobs are happy.

### Related bugs
Closes #5740

### Difference from #5754 
**Note:** This is a re-revert of #5754 that aims to fix issues with Travis CI by ensuring the snapshot test only runs on a single iOS version. I've opened #5888 to expand on this in the future. A few things changed in the approach in this PR:
 * We only run the snapshot test for iOS 11.2.0 until we can have an elegant solution for supporting multiple OS''s (see #5888)
 * The snapshot tests now live in their own test target to avoid issues with having to require an App host for all tests.
* Additionally, a dummy swift file was required for compilation of this new test target (see https://forums.developer.apple.com/thread/88451 for context)
2018-12-05 09:49:41 -05:00
..

Scripts

Scripts for maintaining Material Components for iOS—none of these scripts are required to use MDC or for casual contributors.

The important scripts are:

  • prep_all: prepare the Material Components catalog, tests, and demos apps for building.
  • build_all: build the Material Components catalog and each of our demo apps.
  • test_all: build and test the Material Components unit and integration tests.
  • clean_all: remove artifacts from the prep_all, build_all, and test_all scripts.
  • check_components: run component checks for documentation, examples, etc.
  • install_contributor_tools: install local contributor tools to speed up the development cycle.

Languages

Material Components follows Google's language standards for scripting. The following languages can be used for scripts:

Either language can be used for a particular purpose, but larger or more complex scripts should be written in (or converted to) Python. Bash scripts get unwieldy quickly and advanced Bash scripting knowledge is currently less common than advanced Python scripting knowledge.

The intent is that the scripts will run on relatively current OS X machines with (only) Xcode installed.

iOS Codelabs Build Tests

iOS codelabs build tests ensure that the Objective C and Swift versions of Codelab 104 Complete and Codelab 111 Complete can be built. If a release fails the codelabs build tests, follow these steps:

  1. If the release changes a component that the codelabs use, submit a PR to the codelabs repo with the appropriate changes for the adjusted component. Address each codelab and language that is affected by the change (it may be helpful to run ./build_codelabs -a to determine which codelabs are affected).
  2. Merge the PR into the codelabs repo, and then rerun the codelabs build tests.
  3. Continue with the release process.