Skip to content

Commit 2a8fbe4

Browse files
ryancbahangonzaloriestra
authored andcommitted
make remote dev console the default case
1 parent 35f9fac commit 2a8fbe4

6 files changed

Lines changed: 31 additions & 31 deletions

File tree

packages/app/src/cli/services/dev/processes/dev-session/dev-session-process.test.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {AbortSignal, AbortController} from '@shopify/cli-kit/node/abort'
2020
import {flushPromises} from '@shopify/cli-kit/node/promises'
2121
import * as outputContext from '@shopify/cli-kit/node/ui/components'
2222
import {readdir} from '@shopify/cli-kit/node/fs'
23-
import {firstPartyDev, skipLocalDevConsole} from '@shopify/cli-kit/node/context/local'
23+
import {firstPartyDev, useLocalDevConsole} from '@shopify/cli-kit/node/context/local'
2424

2525
vi.mock('@shopify/cli-kit/node/fs')
2626
vi.mock('@shopify/cli-kit/node/archiver')
@@ -33,7 +33,7 @@ vi.mock('@shopify/cli-kit/node/context/local', async (importOriginal) => {
3333
return {
3434
...original,
3535
firstPartyDev: vi.fn().mockReturnValue(false),
36-
skipLocalDevConsole: vi.fn().mockReturnValue(false),
36+
useLocalDevConsole: vi.fn().mockReturnValue(false),
3737
}
3838
})
3939

@@ -219,10 +219,10 @@ describe('pushUpdatesForDevSession', () => {
219219
contextSpy.mockRestore()
220220
})
221221

222-
test('updates preview URL to appLocalProxyURL when extension is previewable (dev console shown by default)', async () => {
223-
// Given - dev console is shown by default when skipLocalDevConsole is false
222+
test('updates preview URL to appPreviewURL by default (local dev console is opt-in)', async () => {
223+
// Given - dev console is NOT shown by default (requires both firstPartyDev AND useLocalDevConsole)
224224
vi.mocked(firstPartyDev).mockReturnValue(false)
225-
vi.mocked(skipLocalDevConsole).mockReturnValue(false)
225+
vi.mocked(useLocalDevConsole).mockReturnValue(false)
226226
const extension = await testUIExtension({type: 'ui_extension'})
227227
const newApp = testAppLinked({allExtensions: [extension]})
228228

@@ -234,13 +234,13 @@ describe('pushUpdatesForDevSession', () => {
234234
await flushPromises()
235235

236236
// Then
237-
expect(devSessionStatusManager.status.previewURL).toBe(options.appLocalProxyURL)
237+
expect(devSessionStatusManager.status.previewURL).toBe(options.appPreviewURL)
238238
})
239239

240-
test('updates preview URL to appPreviewURL when both skip conditions are met', async () => {
241-
// Given - dev console is skipped only when !firstPartyDev() AND skipLocalDevConsole()
242-
vi.mocked(firstPartyDev).mockReturnValue(false)
243-
vi.mocked(skipLocalDevConsole).mockReturnValue(true)
240+
test('updates preview URL to appLocalProxyURL when 1P dev opts in with useLocalDevConsole', async () => {
241+
// Given - dev console is shown only when firstPartyDev() AND useLocalDevConsole()
242+
vi.mocked(firstPartyDev).mockReturnValue(true)
243+
vi.mocked(useLocalDevConsole).mockReturnValue(true)
244244
const extension = await testUIExtension({type: 'ui_extension'})
245245
const newApp = testAppLinked({allExtensions: [extension]})
246246

@@ -252,8 +252,9 @@ describe('pushUpdatesForDevSession', () => {
252252
await flushPromises()
253253

254254
// Then
255-
expect(devSessionStatusManager.status.previewURL).toBe(options.appPreviewURL)
256-
vi.mocked(skipLocalDevConsole).mockReturnValue(false)
255+
expect(devSessionStatusManager.status.previewURL).toBe(options.appLocalProxyURL)
256+
vi.mocked(firstPartyDev).mockReturnValue(false)
257+
vi.mocked(useLocalDevConsole).mockReturnValue(false)
257258
})
258259

259260
test('updates preview URL to appPreviewURL when no previewable extensions', async () => {

packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/node/hrtime'
1010
import {ClientError} from 'graphql-request'
1111
import {JsonMapType} from '@shopify/cli-kit/node/toml'
1212
import {AbortError} from '@shopify/cli-kit/node/error'
13-
import {firstPartyDev, isUnitTest, skipLocalDevConsole} from '@shopify/cli-kit/node/context/local'
13+
import {firstPartyDev, isUnitTest, useLocalDevConsole} from '@shopify/cli-kit/node/context/local'
1414
import {dirname, joinPath} from '@shopify/cli-kit/node/path'
1515
import {readdir} from '@shopify/cli-kit/node/fs'
1616
import {SerialBatchProcessor} from '@shopify/cli-kit/node/serial-batch-processor'
@@ -240,13 +240,12 @@ export class DevSession {
240240
/**
241241
* Update the preview URL, it only changes if we move between a non-previewable state and a previewable state.
242242
* (i.e. if we go from a state with no extensions to a state with ui-extensions or vice versa)
243-
* Skip the dev console only when BOTH: SHOPIFY_CLI_1P_DEV is NOT enabled AND SHOPIFY_SKIP_LOCAL_DEV_CONSOLE is set.
243+
* Use local dev console only when BOTH: SHOPIFY_CLI_1P_DEV is enabled AND SHOPIFY_USE_LOCAL_DEV_CONSOLE is set.
244244
* @param event - The app event
245245
*/
246246
private updatePreviewURL(event: AppEvent) {
247247
const hasPreview = event.app.allExtensions.filter((ext) => ext.isPreviewable).length > 0
248-
const skipDevConsole = !firstPartyDev() && skipLocalDevConsole()
249-
const useDevConsole = !skipDevConsole && hasPreview
248+
const useDevConsole = firstPartyDev() && useLocalDevConsole() && hasPreview
250249
const newPreviewURL = useDevConsole ? this.options.appLocalProxyURL : this.options.appPreviewURL
251250
this.statusManager.updateStatus({previewURL: newPreviewURL})
252251
}

packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import {Config} from '@oclif/core'
3535
import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment'
3636
import {isStorefrontPasswordProtected} from '@shopify/theme'
3737
import {fetchTheme} from '@shopify/cli-kit/node/themes/api'
38-
import {firstPartyDev, skipLocalDevConsole} from '@shopify/cli-kit/node/context/local'
38+
import {firstPartyDev, useLocalDevConsole} from '@shopify/cli-kit/node/context/local'
3939

4040
vi.mock('../../context/identifiers.js')
4141
vi.mock('@shopify/cli-kit/node/session.js')
@@ -69,10 +69,10 @@ beforeEach(() => {
6969
role: 'theme',
7070
processing: false,
7171
})
72-
// By default, firstPartyDev is false (dev console URL only used when enabled)
72+
// By default, firstPartyDev is false
7373
vi.mocked(firstPartyDev).mockReturnValue(false)
74-
// By default, skipLocalDevConsole is false
75-
vi.mocked(skipLocalDevConsole).mockReturnValue(false)
74+
// By default, useLocalDevConsole is false (local dev console is opt-in for 1P devs)
75+
vi.mocked(useLocalDevConsole).mockReturnValue(false)
7676
})
7777

7878
const appContextResult = {
@@ -168,8 +168,8 @@ describe('setup-dev-processes', () => {
168168
graphiqlKey,
169169
})
170170

171-
// Dev console is shown by default (only skipped when !firstPartyDev() AND skipLocalDevConsole())
172-
expect(res.previewUrl).toBe('https://example.com/proxy/extensions/dev-console')
171+
// Dev console is NOT shown by default (only shown when firstPartyDev() AND useLocalDevConsole())
172+
expect(res.previewUrl).toBe('https://store.myshopify.io/admin/oauth/redirect_from_cli?client_id=api-key')
173173
expect(res.processes[0]).toMatchObject({
174174
type: 'web',
175175
prefix: 'web-backend-frontend',

packages/app/src/cli/services/dev/processes/setup-dev-processes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {AppEventWatcher} from '../app-events/app-event-watcher.js'
2222
import {reloadApp} from '../../../models/app/loader.js'
2323
import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp'
2424
import {isTruthy} from '@shopify/cli-kit/node/context/utilities'
25-
import {firstPartyDev, skipLocalDevConsole} from '@shopify/cli-kit/node/context/local'
25+
import {firstPartyDev, useLocalDevConsole} from '@shopify/cli-kit/node/context/local'
2626
import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment'
2727
import {outputInfo} from '@shopify/cli-kit/node/output'
2828

@@ -100,11 +100,10 @@ export async function setupDevProcesses({
100100
const appWatcher = new AppEventWatcher(reloadedApp, network.proxyUrl)
101101

102102
// Decide on the appropriate preview URL for a session with these processes
103-
// Skip the dev console only when BOTH: SHOPIFY_CLI_1P_DEV is NOT enabled AND SHOPIFY_SKIP_LOCAL_DEV_CONSOLE is set
103+
// Use local dev console only when BOTH: SHOPIFY_CLI_1P_DEV is enabled AND SHOPIFY_USE_LOCAL_DEV_CONSOLE is set
104104
const anyPreviewableExtensions = reloadedApp.allExtensions.some((ext) => ext.isPreviewable)
105105
const devConsoleURL = `${network.proxyUrl}/extensions/dev-console`
106-
const skipDevConsole = !firstPartyDev() && skipLocalDevConsole()
107-
const useDevConsole = !skipDevConsole && anyPreviewableExtensions
106+
const useDevConsole = firstPartyDev() && useLocalDevConsole() && anyPreviewableExtensions
108107
const previewURL = useDevConsole ? devConsoleURL : appPreviewUrl
109108

110109
const graphiqlURL = shouldRenderGraphiQL

packages/cli-kit/src/private/node/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const environmentVariables = {
1919
enableCliRedirect: 'SHOPIFY_CLI_ENABLE_CLI_REDIRECT',
2020
env: 'SHOPIFY_CLI_ENV',
2121
firstPartyDev: 'SHOPIFY_CLI_1P_DEV',
22-
skipLocalDevConsole: 'SHOPIFY_SKIP_LOCAL_DEV_CONSOLE',
22+
useLocalDevConsole: 'SHOPIFY_USE_LOCAL_DEV_CONSOLE',
2323
noAnalytics: 'SHOPIFY_CLI_NO_ANALYTICS',
2424
partnersToken: 'SHOPIFY_CLI_PARTNERS_TOKEN',
2525
runAsUser: 'SHOPIFY_RUN_AS_USER',

packages/cli-kit/src/public/node/context/local.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,14 @@ export function firstPartyDev(env = process.env): boolean {
113113
}
114114

115115
/**
116-
* Returns true if the local dev console should be skipped.
116+
* Returns true if the local dev console should be used.
117+
* This is an opt-in flag for 1P developers to use the local dev console.
117118
*
118119
* @param env - The environment variables from the environment of the current process.
119-
* @returns True if SHOPIFY_SKIP_LOCAL_DEV_CONSOLE is truthy.
120+
* @returns True if SHOPIFY_USE_LOCAL_DEV_CONSOLE is truthy.
120121
*/
121-
export function skipLocalDevConsole(env = process.env): boolean {
122-
return isTruthy(env[environmentVariables.skipLocalDevConsole])
122+
export function useLocalDevConsole(env = process.env): boolean {
123+
return isTruthy(env[environmentVariables.useLocalDevConsole])
123124
}
124125

125126
/**

0 commit comments

Comments
 (0)