diff --git a/packages/server/lib/project-base.ts b/packages/server/lib/project-base.ts index 14ead3335c4..40331d80999 100644 --- a/packages/server/lib/project-base.ts +++ b/packages/server/lib/project-base.ts @@ -180,7 +180,7 @@ export class ProjectBase extends EE { }) } - if (!cfg.isTextTerminal && this.testingType === 'e2e') { + if ((!cfg.isTextTerminal || process.env.CYPRESS_INTERNAL_SIMULATE_OPEN_MODE) && this.testingType === 'e2e') { const studioLifecycleManager = new StudioLifecycleManager() studioLifecycleManager.initializeStudioManager({ diff --git a/packages/server/test/unit/project_spec.js b/packages/server/test/unit/project_spec.js index 5d6b6fe38f0..d47b9ddfa75 100644 --- a/packages/server/test/unit/project_spec.js +++ b/packages/server/test/unit/project_spec.js @@ -27,6 +27,7 @@ let ctx describe('lib/project-base', () => { beforeEach(async function () { delete process.env.CYPRESS_LOCAL_STUDIO_PATH + delete process.env.CYPRESS_INTERNAL_SIMULATE_OPEN_MODE ctx = getCtx() Fixtures.scaffold() @@ -646,6 +647,21 @@ This option will not have an effect in Some-other-name. Tests that rely on web s expect(this.project.ctx.coreData.studioLifecycleManager).to.not.be.undefined }) + + it('creates studio lifecycle manager when CYPRESS_INTERNAL_SIMULATE_OPEN_MODE is set even in text terminal mode', async function () { + this.project.cfg.isTextTerminal = true + process.env.CYPRESS_INTERNAL_SIMULATE_OPEN_MODE = '1' + + sinon.stub(this.project, 'saveState').resolves() + sinon.stub(process, 'chdir') + + await this.project.open() + + expect(this.project.ctx.coreData.studioLifecycleManager).to.not.be.undefined + + // Clean up environment variable + delete process.env.CYPRESS_INTERNAL_SIMULATE_OPEN_MODE + }) }) })