Size: a a a

2019 November 21

OK

Oleksandr Khotemskyi in JS for testing
Nikita
вот это именно то с чем я столкнулся
я что делал - сделал общий класс Application в котором сохраняю все pageObjects, и пересоздаю его после рестарта браузера, чтобы во всех обьявленых элементах записался новый sessionId
источник

m

mkots in JS for testing
Ну не, это сильно страшно, десктоп это хуже мобилок
источник

N

Nikita in JS for testing
protractor видимо не спешит фиксить эту проблему)
источник

OK

Oleksandr Khotemskyi in JS for testing
Nikita
protractor видимо не спешит фиксить эту проблему)
он вообще сейчас вялый, даже 6.х не могут зарелизить уже год
источник

m

mkots in JS for testing
Судя по их гитхабу, они вообще, не спешат
источник

N

Nikita in JS for testing
надо переходить на cypress?)
источник

ab

artem belikov in JS for testing
Oleksandr Khotemskyi
типа -

const myElem = $(‘div’)
await browser.restart()
myElem.click() // ooops, this element still stored OLD sessionId!
А почем у тебя время жизни myElem больше времени жизни браузера)?
источник

OK

Oleksandr Khotemskyi in JS for testing
Nikita
надо переходить на cypress?)
думаешь в сайпресе нет проблемы с httpOnly куками? 😉
источник

OK

Oleksandr Khotemskyi in JS for testing
artem belikov
А почем у тебя время жизни myElem больше времени жизни браузера)?
элемент ленивый, я ожидаю что он переищется автоматом
источник

N

Nikita in JS for testing
Не, думаю там возможно нет проблемы с рестартом
источник

OK

Oleksandr Khotemskyi in JS for testing
artem belikov
А почем у тебя время жизни myElem больше времени жизни браузера)?
а в нем жестко гвоздями прибит sessionId
источник

ab

artem belikov in JS for testing
Oleksandr Khotemskyi
элемент ленивый, я ожидаю что он переищется автоматом
зависимость от внешнего глобального состояния, зло)
источник

C

CHIBRO in JS for testing
mkots
Ну не, это сильно страшно, десктоп это хуже мобилок
Мой коллега автоматизирует на ranorex одно старое desktop app написанное на J#(да да, J #). Вроде стабильно работает все, только за лицензию платить надо
источник

OK

Oleksandr Khotemskyi in JS for testing
artem belikov
зависимость от внешнего глобального состояния, зло)
ElementFinder просто нужно обратится к браузеру еще раз, а не хранить sessionId в себе.
источник

OK

Oleksandr Khotemskyi in JS for testing
правда тут нюансы как хендлить если у тебя браузеров несколько...
источник

OK

Oleksandr Khotemskyi in JS for testing
типа -

const browser1 = browser
const browser2 = await browser.forkNewDriverInstance().ready

const elem1 = browser1.$(‘div’)
const elem2 = browser2.$(‘div’)

await browser1.restart()
await browser2.restart()

elem2.click() // ??? какой sessionid взять? 🤔
источник

ab

artem belikov in JS for testing
Ну вообще elem1 и elem2 должны умереть до browserX.restart() и ты должен их заного получить
источник

OK

Oleksandr Khotemskyi in JS for testing
artem belikov
Ну вообще elem1 и elem2 должны умереть до browserX.restart() и ты должен их заного получить
ну ленивый элемент ожидается что сам это сделает автоматом под капотом. В этом то и вся фишка
источник

ab

artem belikov in JS for testing
const browser1 = browser
const browser2 = await browser.forkNewDriverInstance().ready

{
  const elem1 = browser1.$(‘div’)
  const elem2 = browser2.$(‘div’)

  await browser1.restart()
  await browser2.restart()
}

elem2.click() //
источник

ab

artem belikov in JS for testing
Oleksandr Khotemskyi
ну ленивый элемент ожидается что сам это сделает автоматом под капотом. В этом то и вся фишка
Отстрел ног какой то, явное - лучше не явного :)
источник