- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在过去的两天里,我一直在寻找使用 Expo + Detox + CircleCI 的良好设置,以便应用程序可以在 CI 过程中构建。
在本地,我可以通过下载 Exponent.app 并放入 bin 并运行 expo start(在不同的终端中)来使 Expo + Detox 工作。然而,expo start 在 Circle CI 中是阻塞的,所以有没有一种有效的方法来实现这一点。
我查看了很多示例,但没有找到一个带有更新示例的明确回应,考虑到 Expo 的受欢迎程度,这是一种耻辱。
如果有人有您可以共享的示例 CircleCI 文件,那就太好了!或者确实有助于解释实现这一目标的流程。
我很欣赏这也是 Detox 和 CircleCI 的问题,但我想我会在这里添加它,因为许多人可能也想知道答案?
我目前的 Circle-CI 代码,我一直在反复尝试找到一个有效的解决方案......
# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
defaults: &defaults
working_directory: ~/iynk-react-app
jobs:
test:
<<: *defaults
docker:
- image: circleci/node:10
steps:
- checkout
- run:
name: Update npm
command: 'sudo npm install -g npm@latest'
- run:
name: Install Firebase Tools
command: sudo npm install -g firebase-tools@latest
- restore_cache:
name: Restore Yarn Package Cache
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Install Dependencies
command: yarn install --frozen-lockfile
- save_cache:
name: Save Yarn Package Cache
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- run: yarn test
- run:
name: Install modules in functions
command: yarn --cwd ./functions --ignore-engines
e2e:
<<: *defaults
macos:
xcode: "10.2.1"
steps:
- run:
# Note: the [ character is necessary to uniquely identify the iPhone 8 simulator, as the phone + watch simulator is also present in the build image:
# Will show what looks like an error - Instruments Usage Error: Unknown device specified: "iPhone 8 (12.2) [") - but it launch
name: Pre-start simulator first to ensure that it is open
command: xcrun instruments -w "iPhone 8 (12.2) [" || true
- checkout
- restore_cache:
key: yarn-v1-{{ checksum "yarn.lock" }}-{{ arch }}
- restore_cache:
key: node-v1-{{ checksum "package.json" }}-{{ arch }}
- run: yarn install --ignore-engines
- save_cache:
key: yarn-v1-{{ checksum "yarn.lock" }}-{{ arch }}
paths:
- ~/.cache/yarn
- save_cache:
key: node-v1-{{ checksum "package.json" }}-{{ arch }}
paths:
- node_modules
- run:
name: Install applesimutils
command: |
brew tap wix/brew
brew install applesimutils
- run:
name: Install react-native, detox CLI and expo CLI
command: |
npm install -g react-native-cli
npm install -g detox-cli
npm install -g expo-cli
- run:
name: Prepare detox environment
command: |
detox clean-framework-cache &&
detox build-framework-cache
- run:
name: Download Exponent.app into bin
command: |
brew install wget
./scripts/setup.sh
# - run:
# name: Install the downloaded version of the expo iOS app on the Simulator
# command: |
# xcrun simctl install booted ./bin/Exponent.app
# - run:
# name: Login into Expo and publish to staging
# command: |
# npx expo login -u $EXPO_USERNAME -p $EXPO_PASSWORD
# npx expo publish --non-interactive --max-workers 1 --release-channel staging
- run:
name: Run expo locally using (&) Run detox tests
# shell: /bin/sh
command: |
yarn test:e2e &
expo start -c
workflows:
version: 2
build_and_test:
jobs:
- test
- e2e
"detox": "12.3.0",
"detox-expo-helpers": "^0.6.0",
"expo-detox-hook": "^1.0.10",
brew update
brew tap wix/brew
brew install --HEAD applesimutils
npm install -g detox-cli
./setup.sh
expo start -c
i
从博览会虽然,只需打开模拟器程序。
open -a Simulator.app
yarn test:e2e
- run:
name: Login into Expo and publish to staging (could update with $CIRCLE_BRANCH)
command: |
npx expo login -u $EXPO_USERNAME -p $EXPO_PASSWORD --non-interactive
npx expo publish --non-interactive --max-workers 1 --release-channel testing
beforeAll(async () => {
await detox.init(config);
// Run from the remote build if in CI
if (__CI__) {
const url = 'exp://exp.host/@alexpchin/iynk?release-channel=testing';
await device.relaunchApp({ url, sourceApp: 'host.exp.exponent' });
await expect(element(by.label('Got it'))).toBeVisible();
await element(by.label('Got it')).tap();
}
});
beforeEach(async () => {
await adapter.beforeEach();
// If not CI, use `reloadApp` from `detox-expo-helpers`
if (!__CI__) {
await reloadApp();
}
});
最佳答案
仍然没有答案或更新,所以我会尽量提供我的。
据我了解,您想要自动化的流程是 test on Simulator .所附链接中列出了步骤。
即对于 iOS
expo build:ios -t simulator
expo build:status (or expo url:ipa)
tar -xvzf your-app.tar.gz
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app --args -CurrentDeviceUDID `xcrun instruments -s | grep "iPhone 7 (12.2)" -m1 | cut -d "[" -f2 | cut -d "]" -f1`
xcrun simctl install booted <app path>
xcrun simctl launch booted <app identifier>
关于react-native - 世博会 + 排毒 + CircleCI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56817500/
尝试在 iOS 上创建日历时,我得到: Calendar 'My Calendar' could not be saved: Error Domain=EKErrorDomain Code=14 "C
世博会构建和上传之间有什么区别。上传 cmd 是否仍然返回一个独立的应用程序。我意识到如果我在 Expo Client 上运行可以正常工作,但是当构建独立版本时,应用程序的行为又不一样了。 最佳答案
我正在尝试让我的 expo react-native 应用程序以横向显示 我将 app.json 编辑为: "orientation": "landscape", 这在 App.js 中 import
当我在 expo 中运行应用程序时,键盘覆盖 View 中的输入字段时遇到问题在我的 Android 设备上(我没有可供测试的 iOS 设备)。 我尝试过react-native KeyboardAv
我正在使用 Expo 开发一个 react 原生的消息传递应用程序。每次用户收到一条新消息时,我都会从我的服务器发送一条通知。 如果应用当前打开,有什么方法可以不显示通知? 现在我在收到通知后立即使用
嗨,我是一个学习 React Native + Expo 的新手,我不知道如何在成功登录/登录失败后重定向 到目前为止,这是我的代码: import React from 'react'; impor
我的应用程序是使用 Expo 开发的,该应用程序在 Expo Go 应用程序或任何模拟器上完美运行,0 错误、0(代码警告)和流畅,我最近生成了一个 APK 文件并想在真实设备上对其进行测试,所有 a
在过去的两天里,我一直在寻找使用 Expo + Detox + CircleCI 的良好设置,以便应用程序可以在 CI 过程中构建。 在本地,我可以通过下载 Exponent.app 并放入 bin
重新加载后,我的应用程序已停止加载。 我已经尝试过模拟器和 2 个真实的设备,android 和 ios。 错误是: Error: Unable to resolve module ./debugge
有没有办法更改在 http://localhost:19002/ 之后打开 Expo 界面 (expo start) 的浏览器? 我的默认浏览器是 Firefox,我在私有(private)生活中使用
我正在尝试进行简单的 SQLite 操作(例如选择和插入),但它根本不起作用。 这是我的功能: executarComando(strSql) { return new Promise((re
我正在开发我自己的小私有(private) Expo,使用 Expo SDK 32.0.0 的 React Native 应用程序,我目前正在构建一个身份验证流程,我通过我的 graphql 端点获取
我想在我的应用程序中放置一个按钮,按下时返回手机的当前地址。 我能够正确返回的纬度和经度,并将这些数据转换为我得到的地址 react-native-geocoder图书馆。 我当前的代码如下所示: i
我创建了一个 React Native 项目,我试图在 Expo XDE 中打开该项目。它引发以下错误: Cannot find module ...\node_modules\expo\tools\
我开发了一个 react-native (expo) 移动应用程序并尝试使用 google 帐户登录到 firebase,但出现错误: "auth/operation-not-supported-in
此消息似乎某些包正在使用 UIManager["RCTView"] 不再受支持,但我不确定如何解决此问题 Accessing view manager configs directly off UIM
我正在使用 ScrollView ,当我滚动并放开时,它会因为动量而继续滚动。我希望它只在手指触摸屏幕时滚动,我不想要动量。这可能吗?如果可能,如何实现? 最佳答案 使用值为 0 的 decelera
我已经在 Expo 35 上设置了 facebook 身份验证,如下所述: https://docs.expo.io/versions/v35.0.0/sdk/facebook/ 我可以在 expo
OTA更新已发布到App Store的Expo iOS应用时,app.json中的版本号可以更改/增加吗? 我的应用程序在应用程序的“设置”屏幕中显示 app.json 版本号。如果无法编辑 app.
在尝试使用 expo 配置根据安装指南运行 react-native 应用程序时,我发现了这个错误? Error: Invalid sdkVersion. Valid options are 10.0
我是一名优秀的程序员,十分优秀!