Mangled Jest testing log output

I currently have my builds setup to run jest tests before building, but if it fails I get a mangled log file that I find really hard to read. Is there something I need to configure to fix the console output?

9:16:27 AM: Build ready to start
9:16:29 AM: build-image version: 9e0f207a27642d0115b1ca97cd5e8cebbe492f63
9:16:29 AM: build-image tag: v3.3.2
9:16:29 AM: buildbot version: 38cc4984170575781fef71bee035f0855939acb8
9:16:29 AM: Fetching cached dependencies
9:16:29 AM: Starting to download cache of 166.1MB
9:16:31 AM: Finished downloading cache in 1.371673522s
9:16:31 AM: Starting to extract cache
9:16:40 AM: Finished extracting cache in 9.295067925s
9:16:40 AM: Finished fetching cache in 10.842817131s
9:16:40 AM: Starting to prepare the repo for build
9:16:41 AM: Preparing Git Reference pull/21/head
9:16:42 AM: Found netlify.toml. Overriding site configuration
9:16:42 AM: Starting build script
9:16:42 AM: Installing dependencies
9:16:42 AM: Started restoring cached node version
9:16:49 AM: Finished restoring cached node version
9:16:50 AM: v10.16.3 is already installed.
9:16:52 AM: Now using node v10.16.3 (npm v6.9.0)
9:16:52 AM: Attempting ruby version 2.6.2, read from environment
9:16:53 AM: Using ruby version 2.6.2
9:16:54 AM: Using PHP version 5.6
9:16:54 AM: Started restoring cached node modules
9:16:54 AM: Finished restoring cached node modules
9:16:54 AM: Started restoring cached yarn cache
9:16:54 AM: Finished restoring cached yarn cache
9:16:55 AM: Installing NPM modules using Yarn version 1.13.0
9:16:55 AM: yarn install v1.13.0
9:16:55 AM: [1/4] Resolving packages...
9:16:56 AM: [2/4] Fetching packages...
9:17:24 AM: info fsevents@2.0.7: The platform "linux" is incompatible with this module.
9:17:24 AM: info "fsevents@2.0.7" is an optional dependency and failed compatibility check. Excluding it from installation.
9:17:24 AM: info fsevents@1.2.9: The platform "linux" is incompatible with this module.
9:17:24 AM: info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
9:17:24 AM: [3/4] Linking dependencies...
9:17:24 AM: warning "react-scripts > @typescript-eslint/eslint-plugin@1.13.0" has incorrect peer dependency "eslint@^5.0.0".
9:17:24 AM: warning "react-scripts > @typescript-eslint/parser@1.13.0" has incorrect peer dependency "eslint@^5.0.0".
9:17:24 AM: warning "react-scripts > @typescript-eslint/eslint-plugin > tsutils@3.10.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev".
9:17:43 AM: [4/4] Building fresh packages...
9:17:44 AM: Done in 48.91s.
9:17:44 AM: NPM modules installed using Yarn
9:17:45 AM: Started restoring cached go cache
9:17:45 AM: Finished restoring cached go cache
9:17:45 AM: unset GOOS;
9:17:45 AM: unset GOARCH;
9:17:45 AM: export GOROOT='/opt/buildhome/.gimme/versions/go1.12.linux.amd64';
9:17:45 AM: export PATH="/opt/buildhome/.gimme/versions/go1.12.linux.amd64/bin:${PATH}";
9:17:45 AM: go version >&2;
9:17:45 AM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.12.linux.amd64.env';
9:17:45 AM: go version go1.12 linux/amd64
9:17:45 AM: Installing missing commands
9:17:45 AM: Verify run directory
9:17:45 AM: Executing user command: yarn test && yarn build
9:17:45 AM: yarn run v1.13.0
9:17:45 AM: $ react-scripts test --colors
9:18:03 AM:  PASS  src/utils/__tests__/url-params-test.js (10.58s)
9:18:04 AM:  PASS  src/utils/__tests__/create-api-fetcher.test.js (11.903s)
9:18:04 AM:  PASS  src/api/__tests__/release-activities-api.test.js (12.186s)
9:18:04 AM:  PASS  src/api/__tests__/customers-api.test.js (11.781s)
9:18:05 AM:  PASS  src/components/errors/__tests__/AppLevelErrorBoundary.test.jsx (12.625s)
9:18:06 AM:  PASS  src/context/__tests__/auth-context.test.js (12.382s)
9:18:07 AM:  PASS  src/hooks/__tests__/use-global-async.test.js
9:18:09 AM:  PASS  src/components/__tests__/OrganizationSwitcher.test.jsx
9:18:09 AM:  PASS  src/components/shared/__tests__/DateTimeWithRelative.test.jsx
9:18:10 AM:  PASS  src/context/__tests__/vendors-context.test.js
9:18:11 AM:  PASS  src/utils/time/__tests__/date.test.js
9:18:11 AM:  PASS  src/context/__tests__/current-vendor-context.test.js
9:18:12 AM:  PASS  src/utils/__tests__/local-storage.test.js
9:18:12 AM:  PASS  src/api/__tests__/session-api.test.js (7.962s)
9:18:12 AM:  PASS  src/api/__tests__/template-api.test.js (19.873s)
9:18:12 AM:  PASS  src/api/__tests__/merge-tag-api.test.js
9:18:13 AM:  PASS  src/components/__tests__/LoginForm.test.jsx
9:18:13 AM:  PASS  src/utils/time/__tests__/time.test.js
9:18:14 AM:  PASS  src/utils/__tests__/group-by.test.js
9:18:14 AM:  PASS  src/context/__tests__/user-context.test.js
9:18:15 AM:  PASS  src/api/__tests__/api-client.test.js
9:18:15 AM:  PASS  src/utils/__tests__/call-all.test.js
9:18:15 AM:  PASS  src/api/__tests__/outreaches-api.test.js
9:18:16 AM:  PASS  src/utils/__tests__/delay.test.js
9:18:16 AM:  PASS  src/utils/__tests__/phone-number-formatter.test.js
9:18:16 AM:  PASS  src/components/shared/__tests__/SymendLogo.test.jsx
9:18:16 AM:  PASS  src/api/__tests__/vendor-api.test.js
9:18:16 AM:  PASS  src/api/__tests__/treatment-paths-api.test.js
9:18:19 AM:  PASS  src/screens/__tests__/Vendors.test.jsx (14.601s)
9:18:19 AM:   ● Console
9:18:19 AM:     console.warn node_modules/react-dom/cjs/react-dom.development.js:11494
9:18:19 AM:       Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details.
9:18:19 AM:       
9:18:19 AM:       * Move code with side effects to componentDidMount, and set initial state in the constructor.
9:18:19 AM:       * Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
9:18:19 AM:       
9:18:19 AM:       Please update the following components: SideEffect(NullComponent)
9:18:19 AM:     console.warn node_modules/@reach/utils/index.js:15
9:18:19 AM:       @reach/menu-button styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:
9:18:19 AM:       
9:18:19 AM:           import "@reach/menu-button/styles.css";
9:18:19 AM:       
9:18:19 AM:         Otherwise you'll need to include them some other way:
9:18:19 AM:       
9:18:19 AM:           <link rel="stylesheet" type="text/css" href="node_modules/@reach/menu-button/styles.css" />
9:18:19 AM:       
9:18:19 AM:         For more information visit https://ui.reach.tech/styling.
9:18:19 AM:         
9:18:19 AM:  FAIL  src/screens/__tests__/App.login.test.jsx (15.651s)
9:18:19 AM:   ● Console
9:18:19 AM:     console.warn node_modules/react-dom/cjs/react-dom.development.js:11494
9:18:19 AM:       Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details.
9:18:19 AM:       
9:18:19 AM:       * Move code with side effects to componentDidMount, and set initial state in the constructor.
9:18:19 AM:       * Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
9:18:19 AM:       
9:18:19 AM:       Please update the following components: SideEffect(NullComponent)
9:18:19 AM:     console.warn node_modules/@reach/utils/index.js:15
9:18:19 AM:       @reach/menu-button styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:
9:18:19 AM:       
9:18:19 AM:           import "@reach/menu-button/styles.css";
9:18:19 AM:       
9:18:19 AM:         Otherwise you'll need to include them some other way:
9:18:19 AM:       
9:18:19 AM:           <link rel="stylesheet" type="text/css" href="node_modules/@reach/menu-button/styles.css" />
9:18:19 AM:       
9:18:19 AM:         For more information visit https://ui.reach.tech/styling.
9:18:19 AM:         
9:18:19 AM:   ● login flow › shows protected content when a user enters with correct credentials
9:18:19 AM:     : Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:
9:18:19 AM: 
9:18:19 AM:       24 | 
9:18:19 AM:       25 | describe('login flow', () => {
9:18:19 AM:     > 26 |   it('shows protected content when a user enters with correct credentials', async () => {
9:18:19 AM:          |   ^
9:18:19 AM:       27 |     const { container, debug, getByLabelText, getByText } = renderWithRouter(
9:18:19 AM:       28 |       <AuthProvider>
9:18:19 AM:       29 |         <App />
9:18:19 AM: 
9:18:20 AM: failed during stage 'building site': Build script returned non-zero exit code: 1
9:18:19 AM:       at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
9:18:19 AM:       at Suite.it (src/screens/__tests__/App.login.test.jsx:26:3)
9:18:19 AM:       at Object.describe (src/screens/__tests__/App.login.test.jsx:25:1)
9:18:19 AM: Summary of all failing tests
9:18:19 AM: 
e9:18:19 AM: [0m
e9:18:19 AM: [7m
19:18:19 AM: m FAI
9:18:19 AM: L 
9:18:19 AM: 
9:18:19 AM: 
e9:18:19 AM: [0m 
e9:18:19 AM: [2msr
9:18:19 AM: c/scre
9:18:19 AM: ens/__
9:18:19 AM: tests__/
9:18:19 AM: 
19:18:19 AM: mApp.login.
9:18:19 AM: test.jsx
9:18:19 AM: 
9:18:19 AM: (
e9:18:19 AM: [1m
9:18:19 AM: 41m15.
9:18:19 AM: 6
9:18:19 AM: 5
9:18:19 AM: 1
9:18:19 AM: s
9:18:19 AM: 
e9:18:19 AM: [
9:18:19 AM: 49m
229:18:19 AM: m)
9:18:19 AM: 
9:18:19 AM:   
9:18:19 AM: 1m●
9:18:19 AM: lo
9:18:19 AM: gin fl
9:18:19 AM: ow › s
9:18:19 AM: hows
9:18:19 AM:  prote
9:18:19 AM: cted
9:18:19 AM:  conte
9:18:19 AM: nt wh
9:18:20 AM: en a u
9:18:20 AM: ser en
9:18:20 AM: ters wi
9:18:20 AM: th co
9:18:20 AM: rrect
9:18:20 AM: crede
9:18:20 AM: ntials
9:18:20 AM: 
9:18:20 AM: 
9:18:20 AM:     : T
9:18:20 AM: imeout
9:18:20 AM:  - A
9:18:20 AM: sync c
9:18:20 AM: allb
9:18:20 AM: ack w
9:18:20 AM: as n
9:18:20 AM: ot inv
9:18:20 AM: oked
9:18:20 AM: withi
9:18:20 AM: n the
9:18:20 AM:  5000
9:18:20 AM: ms t
9:18:20 AM: imeout
9:18:20 AM:  spe
9:18:20 AM: cified
9:18:20 AM:  by
9:18:20 AM: jest.
9:18:20 AM: setTi
9:18:20 AM: meout
9:18:20 AM: .Tim
9:18:20 AM: eout
9:18:20 AM:  - As
9:18:20 AM: ync
9:18:20 AM:  callb
9:18:20 AM: ack w
9:18:20 AM: as not
9:18:20 AM:  invoke
9:18:20 AM: d within t
9:18:20 AM: he 5000ms
9:18:20 AM:  timeou
9:18:20 AM: t spec
9:18:20 AM: ified
9:18:20 AM:  by je
9:18:20 AM: st.se
9:18:20 AM: tTime
9:18:20 AM: out.Er
9:18:20 AM: ror:
9:18:20 AM: 
e9:18:20 AM: [2m
9:18:20 AM: 
e9:18:20 AM: [2m     
9:18:20 AM: 90m 24 |
9:18:20 AM: 
9:18:20 AM: 22m
9:18:20 AM: 
9:18:20 AM:    25 | 
39:18:20 AM: 9mdescribe
9:18:20 AM: ('logi
9:18:20 AM: n f
9:18:20 AM: l
9:18:20 AM: o
9:18:20 AM: w
9:18:20 AM: '
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 9
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 3
9:18:20 AM: m
9:18:20 AM: ,
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 9
9:18:20 AM: m
9:18:20 AM: (
9:18:20 AM: )
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 3
9:18:20 AM: m
9:18:20 AM: =
9:18:20 AM: >
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 9
9:18:20 AM: m
9:18:20 AM: {
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 0
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 2
9:18:20 AM: 2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 0
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 1
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 1
9:18:20 AM: m
9:18:20 AM: >
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 9
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 9
9:18:20 AM: 0
9:18:20 AM: m
9:18:20 AM: 2
9:18:20 AM: 6
9:18:20 AM: |
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 3
9:18:20 AM: 9
9:18:20 AM: m
9:18:20 AM: i
9:18:20 AM: t
9:18:20 AM: (
9:18:20 AM: 
9:18:20 AM: 32m'
9:18:20 AM: sho
9:18:20 AM: ws
9:18:20 AM:  pr
9:18:20 AM: ote
9:18:20 AM: ct
9:18:20 AM: e
9:18:20 AM: d
9:18:20 AM:  c
9:18:20 AM: ont
9:18:20 AM: en
9:18:20 AM: t
9:18:20 AM: whe
9:18:20 AM: n a
9:18:20 AM:  u
9:18:20 AM: se
9:18:20 AM: r e
9:18:20 AM: nt
9:18:20 AM: e
9:18:20 AM: r
9:18:20 AM: s w
9:18:20 AM: it
9:18:20 AM: h
9:18:20 AM: c
9:18:20 AM: or
9:18:20 AM: re
9:18:20 AM: ct
9:18:20 AM: c
9:18:20 AM: re
9:18:20 AM: de
9:18:20 AM: nt
9:18:20 AM: ia
9:18:20 AM: ls'
9:18:20 AM: 
9:18:20 AM: 39m, async () 
39:18:20 AM: 3
9:18:20 AM: m
9:18:20 AM: =
9:18:20 AM: >
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 39
9:18:20 AM: m
9:18:20 AM: {
9:18:20 AM: 
9:18:20 AM: 0m
9:18:20 AM: 
9:18:20 AM: 22
9:18:20 AM: m
9:18:20 AM: 
9:18:20 AM: 2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [0m
9:18:20 AM:  
e9:18:20 AM: [
9:18:20 AM: 90
9:18:20 AM: m
9:18:20 AM: |
9:18:20 AM: 
e9:18:20 AM: [3
9:18:20 AM: 9m
9:18:20 AM:  
e9:18:20 AM: [3
9:18:20 AM: 1m
9:18:20 AM: 
9:18:20 AM: 1m
9:18:20 AM: ^
9:18:20 AM: 
9:18:20 AM: 2m
9:18:20 AM: 
9:18:20 AM: 39
9:18:20 AM: m
e9:18:20 AM: [0
9:18:20 AM: m
29:18:20 AM: 2m
9:18:20 AM: 
e9:18:20 AM: [2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [
9:18:20 AM: 0m
9:18:20 AM: 
9:18:20 AM: 90
9:18:20 AM: m
9:18:20 AM: 27
9:18:20 AM:  |
9:18:20 AM:  
9:18:20 AM: 39
9:18:20 AM: m
9:18:20 AM:  
9:18:20 AM: 36m
9:18:20 AM: co
9:18:20 AM: n
9:18:20 AM: st
9:18:20 AM: 
9:18:20 AM: 39
9:18:20 AM: m
9:18:20 AM: {
9:18:20 AM:  c
9:18:20 AM: on
9:18:20 AM: ta
9:18:20 AM: in
9:18:20 AM: er
9:18:20 AM: 
9:18:20 AM: 33
9:18:20 AM: m,
9:18:20 AM: 
e9:18:20 AM: [3
9:18:20 AM: 9m
9:18:20 AM:  d
9:18:20 AM: eb
9:18:20 AM: ug
9:18:20 AM: 
9:18:20 AM: 3
9:18:20 AM: 3m
9:18:20 AM: ,
e9:18:20 AM: [
9:18:20 AM: 39m
9:18:20 AM: ge
9:18:20 AM: tB
9:18:20 AM: y
9:18:20 AM: Lab
9:18:20 AM: e
9:18:20 AM: lT
9:18:20 AM: e
9:18:20 AM: xt
9:18:20 AM: 
9:18:20 AM: 33
9:18:20 AM: m
9:18:20 AM: ,
9:18:20 AM: 39
9:18:20 AM: m g
9:18:20 AM: etB
9:18:20 AM: yT
9:18:20 AM: ext
9:18:20 AM:  }
9:18:20 AM: 
e9:18:20 AM: [3
9:18:20 AM: 3m
9:18:20 AM: =
e9:18:20 AM: [3
9:18:20 AM: 9
9:18:20 AM: m r
9:18:20 AM: end
9:18:20 AM: er
9:18:20 AM: Wi
9:18:20 AM: th
9:18:20 AM: Ro
9:18:20 AM: ut
9:18:20 AM: e
9:18:20 AM: r(
9:18:20 AM: 
9:18:20 AM: 0m
9:18:20 AM: 
e9:18:20 AM: [2
9:18:20 AM: 2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [2
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [0
9:18:20 AM: m
9:18:20 AM: 
e9:18:20 AM: [9
9:18:20 AM: 0m 28 |       <AuthProvider>
9:18:20 AM:       29 |         <App />
9:18:20 AM: 
9:18:20 AM:       at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
9:18:20 AM:       at Suite.it (src/screens/__tests__/App.login.test.jsx:26:3)
9:18:20 AM:       at Object.describe (src/screens/__tests__/App.login.test.jsx:25:1)
9:18:20 AM: Test Suites: 1 failed, 29 passed, 30 total
9:18:20 AM: Tests:       1 failed, 122 passed, 123 total
9:18:20 AM: Snapshots:   6 passed, 6 total
9:18:20 AM: Time:        32.981s
9:18:20 AM: Ran all test suites.
9:18:20 AM: (node:1373) UnhandledPromiseRejectionWarning: Error: Caught error after test environment was torn down
9:18:20 AM: Unable to find a label with the text of: /email/i
9:18:20 AM: <body
9:18:20 AM:   class=""
9:18:20 AM: />
9:18:20 AM: (node:1373) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 4)
9:18:20 AM: (node:1373) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
9:18:20 AM: error Command failed with exit code 1.
9:18:20 AM: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
9:18:20 AM: Skipping functions preparation step: no functions directory set
9:18:20 AM: Caching artifacts
9:18:20 AM: Started saving node modules
9:18:20 AM: Finished saving node modules
9:18:20 AM: Started saving yarn cache
9:18:20 AM: Finished saving yarn cache
9:18:20 AM: Started saving pip cache
9:18:20 AM: Finished saving pip cache
9:18:20 AM: Started saving emacs cask dependencies
9:18:20 AM: Finished saving emacs cask dependencies
9:18:20 AM: Started saving maven dependencies
9:18:20 AM: Finished saving maven dependencies
9:18:20 AM: Started saving boot dependencies
9:18:20 AM: Finished saving boot dependencies
9:18:20 AM: Started saving go dependencies
9:18:20 AM: Finished saving go dependencies
9:18:20 AM: Error running command: Build script returned non-zero exit code: 1
9:18:20 AM: Failing build: Failed to build site
9:18:20 AM: Finished processing build request in 1m51.056755522s

@ericchernuka, it looks like there are escape codes being printed to the console. This is likely because the --colors option is being used:

9:17:45 AM: $ react-scripts test --colors

It appears something (again, I suspect it is this option) is causing the line length to be very short which is then causing newlines after just a few characters.

Would you be willing to please try removing that option and test deploying again?

@luke, removed the option and ran it again. It seems slightly better, but the end result is now this:

7:49:02 AM: Build ready to start
7:49:05 AM: build-image version: 9e0f207a27642d0115b1ca97cd5e8cebbe492f63
7:49:05 AM: build-image tag: v3.3.2
7:49:05 AM: buildbot version: 38cc4984170575781fef71bee035f0855939acb8
7:49:05 AM: Fetching cached dependencies
7:49:05 AM: Starting to download cache of 166.1MB
7:49:07 AM: Finished downloading cache in 1.471784717s
7:49:07 AM: Starting to extract cache
7:49:15 AM: Finished extracting cache in 8.071121724s
7:49:15 AM: Finished fetching cache in 9.65071224s
7:49:15 AM: Starting to prepare the repo for build
7:49:15 AM: Preparing Git Reference pull/21/head
7:49:16 AM: Found netlify.toml. Overriding site configuration
7:49:16 AM: Starting build script
7:49:16 AM: Installing dependencies
7:49:17 AM: Started restoring cached node version
7:49:23 AM: Finished restoring cached node version
7:49:24 AM: v10.16.3 is already installed.
7:49:25 AM: Now using node v10.16.3 (npm v6.9.0)
7:49:25 AM: Attempting ruby version 2.6.2, read from environment
7:49:27 AM: Using ruby version 2.6.2
7:49:27 AM: Using PHP version 5.6
7:49:27 AM: Started restoring cached node modules
7:49:27 AM: Finished restoring cached node modules
7:49:27 AM: Started restoring cached yarn cache
7:49:27 AM: Finished restoring cached yarn cache
7:49:28 AM: Installing NPM modules using Yarn version 1.13.0
7:49:28 AM: yarn install v1.13.0
7:49:29 AM: [1/4] Resolving packages...
7:49:29 AM: [2/4] Fetching packages...
7:49:54 AM: info fsevents@2.0.7: The platform "linux" is incompatible with this module.
7:49:54 AM: info "fsevents@2.0.7" is an optional dependency and failed compatibility check. Excluding it from installation.
7:49:54 AM: info fsevents@1.2.9: The platform "linux" is incompatible with this module.
7:49:54 AM: info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
7:49:54 AM: [3/4] Linking dependencies...
7:49:54 AM: warning "react-scripts > @typescript-eslint/eslint-plugin@1.13.0" has incorrect peer dependency "eslint@^5.0.0".
7:49:54 AM: warning "react-scripts > @typescript-eslint/parser@1.13.0" has incorrect peer dependency "eslint@^5.0.0".
7:49:54 AM: warning "react-scripts > @typescript-eslint/eslint-plugin > tsutils@3.10.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev".
7:50:12 AM: [4/4] Building fresh packages...
7:50:12 AM: Done in 43.72s.
7:50:12 AM: NPM modules installed using Yarn
7:50:13 AM: Started restoring cached go cache
7:50:13 AM: Finished restoring cached go cache
7:50:13 AM: unset GOOS;
7:50:13 AM: unset GOARCH;
7:50:13 AM: export GOROOT='/opt/buildhome/.gimme/versions/go1.12.linux.amd64';
7:50:13 AM: export PATH="/opt/buildhome/.gimme/versions/go1.12.linux.amd64/bin:${PATH}";
7:50:13 AM: go version >&2;
7:50:13 AM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.12.linux.amd64.env';
7:50:13 AM: go version go1.12 linux/amd64
7:50:13 AM: Installing missing commands
7:50:13 AM: Verify run directory
7:50:13 AM: Executing user command: yarn test && yarn build
7:50:13 AM: yarn run v1.13.0
7:50:13 AM: $ react-scripts test
7:50:29 AM: PASS src/utils/__tests__/create-api-fetcher.test.js (9.811s)
7:50:30 AM: PASS src/api/__tests__/release-activities-api.test.js (10.194s)
7:50:30 AM: PASS src/utils/__tests__/url-params-test.js (9.489s)
7:50:31 AM: PASS src/components/errors/__tests__/AppLevelErrorBoundary.test.jsx (11.68s)
7:50:31 AM: PASS src/api/__tests__/customers-api.test.js (10.887s)
7:50:31 AM: PASS src/context/__tests__/auth-context.test.js (11.699s)
7:50:33 AM: PASS src/hooks/__tests__/use-global-async.test.js
7:50:35 AM: PASS src/context/__tests__/vendors-context.test.js
7:50:35 AM: PASS src/components/shared/__tests__/DateTimeWithRelative.test.jsx
7:50:35 AM: PASS src/components/__tests__/OrganizationSwitcher.test.jsx
7:50:36 AM: PASS src/utils/time/__tests__/date.test.js
7:50:37 AM: PASS src/api/__tests__/template-api.test.js (17.433s)
7:50:37 AM: PASS src/context/__tests__/current-vendor-context.test.js
7:50:37 AM: PASS src/utils/__tests__/local-storage.test.js
7:50:38 AM: PASS src/api/__tests__/session-api.test.js (7.309s)
7:50:39 AM: PASS src/api/__tests__/merge-tag-api.test.js
7:50:39 AM: PASS src/components/__tests__/LoginForm.test.jsx
7:50:39 AM: PASS src/components/template-preview/previews/__tests__/SmsTemplatePreview.test.js
7:50:39 AM: PASS src/utils/__tests__/string.test.js
7:50:40 AM: PASS src/context/__tests__/user-context.test.js
7:50:41 AM: PASS src/utils/time/__tests__/time.test.js
7:50:41 AM: PASS src/utils/__tests__/call-all.test.js
7:50:41 AM: PASS src/utils/__tests__/group-by.test.js
7:50:41 AM: PASS src/api/__tests__/api-client.test.js
7:50:42 AM: PASS src/api/__tests__/outreaches-api.test.js
7:50:42 AM: PASS src/utils/__tests__/phone-number-formatter.test.js
7:50:42 AM: PASS src/utils/__tests__/delay.test.js
7:50:42 AM: PASS src/components/shared/__tests__/SymendLogo.test.jsx
7:50:42 AM: PASS src/api/__tests__/vendor-api.test.js
7:50:43 AM: PASS src/api/__tests__/treatment-paths-api.test.js (5.791s)
7:50:44 AM: PASS src/screens/__tests__/Vendors.test.jsx (13.688s)
7:50:44 AM:   ● Console
7:50:44 AM:     console.warn node_modules/react-dom/cjs/react-dom.development.js:11494
7:50:44 AM:       Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details.
7:50:44 AM:       * Move code with side effects to componentDidMount, and set initial state in the constructor.
7:50:44 AM:       * Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
7:50:44 AM:       Please update the following components: SideEffect(NullComponent)
7:50:44 AM:     console.warn node_modules/@reach/utils/index.js:15
7:50:44 AM:       @reach/menu-button styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:
7:50:44 AM:           import "@reach/menu-button/styles.css";
7:50:44 AM:         Otherwise you'll need to include them some other way:
7:50:44 AM: failed during stage 'building site': Build script returned non-zero exit code: 1
7:50:44 AM:           <link rel="stylesheet" type="text/css" href="node_modules/@reach/menu-button/styles.css" />
7:50:44 AM:         For more information visit https://ui.reach.tech/styling.
7:50:44 AM: FAIL src/screens/__tests__/App.login.test.jsx (14.005s)
7:50:44 AM:   ● Console
7:50:44 AM:     console.warn node_modules/react-dom/cjs/react-dom.development.js:11494
7:50:44 AM:       Warning: componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-async-component-lifecycle-hooks for details.
7:50:44 AM:       * Move code with side effects to componentDidMount, and set initial state in the constructor.
7:50:44 AM:       * Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.
7:50:44 AM:       Please update the following components: SideEffect(NullComponent)
7:50:44 AM:     console.warn node_modules/@reach/utils/index.js:15
7:50:44 AM:       @reach/menu-button styles not found. If you are using a bundler like webpack or parcel include this in the entry file of your app before any of your own styles:
7:50:44 AM:           import "@reach/menu-button/styles.css";
7:50:44 AM:         Otherwise you'll need to include them some other way:
7:50:44 AM:           <link rel="stylesheet" type="text/css" href="node_modules/@reach/menu-button/styles.css" />
7:50:44 AM:         For more information visit https://ui.reach.tech/styling.
7:50:44 AM:   ● login flow › shows protected content when a user enters with correct credentials
7:50:44 AM:     : Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:
7:50:44 AM:       25 |
7:50:44 AM:       26 | describe('login flow', () => {
7:50:44 AM:     > 27 |   it('shows protected content when a user enters with correct credentials', async () => {
7:50:44 AM:          |   ^
7:50:44 AM:       28 |     const { getByLabelText, getByText } = renderWithRouter(
7:50:44 AM:       29 |       <AuthProvider>
7:50:44 AM:       30 |         <App />
7:50:44 AM:       at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
7:50:44 AM:       at Suite.it (src/screens/__tests__/App.login.test.jsx:27:3)
7:50:44 AM:       at Object.describe (src/screens/__tests__/App.login.test.jsx:26:1)
7:50:44 AM: Summary of all failing tests
7:50:44 AM: FAIL src/screens/__tests__/App.login.test.jsx (14.005s)
7:50:44 AM:   ● login flow › shows protected content when a user ente
7:50:44 AM: r
7:50:44 AM: s
7:50:44 AM: w
7:50:44 AM: i
7:50:44 AM: t
7:50:44 AM: h
7:50:44 AM: c
7:50:44 AM: o
7:50:44 AM: r
7:50:44 AM: r
7:50:44 AM: e
7:50:44 AM: c
7:50:44 AM: t
7:50:44 AM: c
7:50:44 AM: r
7:50:44 AM: e
7:50:44 AM: d
7:50:44 AM: e
7:50:44 AM: n
7:50:44 AM: t
7:50:44 AM: i
7:50:44 AM: a
7:50:44 AM: l
7:50:44 AM: s
7:50:44 AM: :
7:50:44 AM: T
7:50:44 AM: i
7:50:44 AM: m
7:50:44 AM: e
7:50:44 AM: o
7:50:44 AM: u
7:50:44 AM: t
7:50:44 AM: -
7:50:44 AM: A
7:50:44 AM: s
7:50:44 AM: y
7:50:44 AM: n
7:50:44 AM: c
7:50:44 AM: c
7:50:44 AM: a
7:50:44 AM: l
7:50:44 AM: l
7:50:44 AM: b
7:50:44 AM: a
7:50:44 AM: c

@ericchernuka, the logs are streamed so we save and display them the way they are outputted. As you can see, other logs from different processes show up normally. I don’t know how to change Jest’s output to be more readable than it is.