В BDD мы хотим описать поведение нашего приложения или классов, чтобы их было легко изменить. Если удаление дублирования также затеняет поведение, не удаляйте дублирование. Код читается в 10 раз больше, чем написано, а IME даже больше для сценариев BDD и примеров на уровне устройств.
Если вы все-таки решили удалить дублирование, замените его на что-нибудь читаемое. Я не знаком с JSpec, но ожидаю что-то вроде
scannedData.shouldMatch "The Jacket", "2005"
, где проверяются все соответствующие результаты для заголовка и года.
Чтобы удалить дублирование независимо от того, вошли вы в систему или нет:
Разделите код на Givens (контекст, в котором не имеет значения, как вы туда попали), Whens (события через приложение, поведение которых вы действительно хотите проверить) и Thens (результаты, которые вы ищете). Вы хотите описать возможности системы и то, что пользователь может с ней сделать, а не то, является ли это веб-страницей или окном - это не должно иметь значения. Переведите вызовы более низкого уровня на более низкий уровень.
После этого вы можете получить две разные привилегии - авторизоваться или не авторизоваться - и использовать остальные шаги для остальных.