From 52946db17994e2f5595500b834f86c8008b11cd2 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 15 Oct 2015 12:54:33 -0600 Subject: [PATCH] Ensure windows/workspace present before proceeding in integration specs Signed-off-by: Max Brunsfeld --- spec/integration/helpers/start-atom.coffee | 12 ++++++++--- spec/integration/startup-spec.coffee | 25 ---------------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/spec/integration/helpers/start-atom.coffee b/spec/integration/helpers/start-atom.coffee index 6a7144141..b8768f532 100644 --- a/spec/integration/helpers/start-atom.coffee +++ b/spec/integration/helpers/start-atom.coffee @@ -91,7 +91,8 @@ buildAtomClient = (args, env) -> cb(null) .addCommand "treeViewRootDirectories", (cb) -> - @execute(-> + @waitForExist('.tree-view', 10000) + .execute(-> for element in document.querySelectorAll(".tree-view .project-root > .header .name") element.dataset.path , cb) @@ -104,7 +105,8 @@ buildAtomClient = (args, env) -> .then ({value: newWindowHandles}) -> [newWindowHandle] = difference(newWindowHandles, oldWindowHandles) return done() unless newWindowHandle - @window(newWindowHandle, done) + @window(newWindowHandle) + .waitForExist('atom-workspace', 10000, done) .addCommand "startAnotherAtom", (args, env, done) -> @call -> @@ -168,7 +170,11 @@ module.exports = (args, env, fn) -> jasmine.getEnv().currentSpec.fail(new Error(err.response?.body?.value?.message)) finish() - fn(client.init()).then(finish) + fn( + client.init() + .waitUntil((-> @windowHandles().then ({value}) -> value.length > 0), 10000) + .waitForExist("atom-workspace", 10000) + ).then(finish) , 30000) waitsFor("webdriver to stop", chromeDriverDown, 15000) diff --git a/spec/integration/startup-spec.coffee b/spec/integration/startup-spec.coffee index 8e1e7c4d7..36342470d 100644 --- a/spec/integration/startup-spec.coffee +++ b/spec/integration/startup-spec.coffee @@ -28,8 +28,6 @@ describe "Starting Atom", -> it "opens the parent directory and creates an empty text editor", -> runAtom [path.join(tempDirPath, "new-file")], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 1000) .treeViewRootDirectories() @@ -54,8 +52,6 @@ describe "Starting Atom", -> runAtom ["#{filePath}:3"], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 1000) .waitForExist("atom-text-editor", 5000) .then (exists) -> expect(exists).toBe true @@ -79,8 +75,6 @@ describe "Starting Atom", -> runAtom ["#{filePath}:2:2"], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 1000) .waitForExist("atom-text-editor", 5000) .then (exists) -> expect(exists).toBe true @@ -97,8 +91,6 @@ describe "Starting Atom", -> filePath = path.join(tempDirPath, "new-file") runAtom ["#{filePath}: "], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 1000) .waitForExist("atom-text-editor", 5000) .then (exists) -> expect(exists).toBe true @@ -113,8 +105,6 @@ describe "Starting Atom", -> runAtom [path.join(tempDirPath, "new-file")], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 5000) # Opening another file reuses the same window and does not change the @@ -131,7 +121,6 @@ describe "Starting Atom", -> .waitForNewWindow(-> @startAnotherAtom([otherTempDirPath], ATOM_HOME: atomHome) , 5000) - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(0, 1000) .treeViewRootDirectories() .then ({value}) -> expect(value).toEqual([otherTempDirPath]) @@ -140,14 +129,12 @@ describe "Starting Atom", -> it "remembers the state of the window", -> runAtom [tempDirPath], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(0, 3000) .execute -> atom.workspace.open() .waitForPaneItemCount(1, 3000) runAtom [tempDirPath], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace", 10000) .waitForPaneItemCount(1, 5000) describe "opening multiple directories simultaneously", -> @@ -157,14 +144,12 @@ describe "Starting Atom", -> runAtom [tempDirPath, otherTempDirPath], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace", 10000) .treeViewRootDirectories() .then ({value}) -> expect(value).toEqual([tempDirPath, otherTempDirPath]) # Opening one of those directories again reuses the same window and # does not change the project paths. .startAnotherAtom([nestedDir], ATOM_HOME: atomHome) - .waitForExist("atom-workspace", 10000) .treeViewRootDirectories() .then ({value}) -> expect(value).toEqual([tempDirPath, otherTempDirPath]) @@ -172,7 +157,6 @@ describe "Starting Atom", -> it "reuses that window to open a directory", -> runAtom [], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace") .treeViewRootDirectories() .then ({value}) -> expect(value).toEqual([]) @@ -188,7 +172,6 @@ describe "Starting Atom", -> it "opens a new window with a single untitled buffer", -> runAtom [], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace") .waitForPaneItemCount(1, 5000) # Opening with no file paths always creates a new window, even if @@ -196,7 +179,6 @@ describe "Starting Atom", -> .waitForNewWindow(-> @startAnotherAtom([], ATOM_HOME: atomHome) , 5000) - .waitForExist("atom-workspace") .waitForPaneItemCount(1, 5000) it "doesn't open a new window if openEmptyEditorOnStart is disabled", -> @@ -207,17 +189,14 @@ describe "Starting Atom", -> runAtom [], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace") .waitForPaneItemCount(0, 5000) it "reopens any previously opened windows", -> runAtom [tempDirPath], {ATOM_HOME: atomHome}, (client) -> client - .waitForExist("atom-workspace") .waitForNewWindow(-> @startAnotherAtom([otherTempDirPath], ATOM_HOME: atomHome) , 5000) - .waitForExist("atom-workspace") runAtom [], {ATOM_HOME: atomHome}, (client) -> windowProjectPaths = [] @@ -226,12 +205,10 @@ describe "Starting Atom", -> .waitForWindowCount(2, 10000) .then ({value: windowHandles}) -> @window(windowHandles[0]) - .waitForExist("atom-workspace") .treeViewRootDirectories() .then ({value: directories}) -> windowProjectPaths.push(directories) .window(windowHandles[1]) - .waitForExist("atom-workspace") .treeViewRootDirectories() .then ({value: directories}) -> windowProjectPaths.push(directories) @@ -246,7 +223,5 @@ describe "Starting Atom", -> remoteDirectory = 'remote://server:3437/some/directory/path' runAtom [remoteDirectory], {ATOM_HOME: atomHome}, (client) -> client - .waitForWindowCount(1, 1000) - .waitForExist("atom-workspace", 10000) .treeViewRootDirectories() .then ({value}) -> expect(value).toEqual([remoteDirectory])