bootg.com »
United States »
Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты » Telegram Web
В ней собраны основные команды для эффективного управления ветками и фиксации правок:
Эта памятка поможет быстро ориентироваться в ключевых операциях Git и держать историю вашего проекта в порядке.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤩2
Как можно объединить преимущества обеих технологий в одном приложении? Гибридные приложения предлагают решение, которое позволяет экономить время и ресурсы, но не без своих ограничений.
В карточках разобрали ключевые моменты:
Погружаемся в детали
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🥰3🤩2
Асинхронные экшены в Redux обрабатывают API-запросы и диспатчат действия по результату. Их можно проверить без UI — через мок-хранилище и анализ последовательности.
Почему важно:
Как протестировать:
1. Установим зависимости:
npm install redux-mock-store redux-thunk --save-dev
2. Создадим мок-хранилища:
import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
const store = configureStore([thunk])();
3. Пример экшена:
export const fetchData = () => async dispatch => {
dispatch({ type: 'FETCH_START' });
try {
const res = await fetch('/api/data');
const data = await res.json();
dispatch({ type: 'FETCH_SUCCESS', payload: data });
} catch (e) {
dispatch({ type: 'FETCH_ERROR', error: true });
}
};
4. Позитивный сценарий:
it('dispatches FETCH_START и FETCH_SUCCESS', async () => {
global.fetch = jest.fn(() =>
Promise.resolve({ json: () => Promise.resolve({ name: 'test' }) })
);
await store.dispatch(fetchData());
const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_SUCCESS', payload: { name: 'test' } }
]);
});
5. Негативный сценарий (сетевая ошибка):
it('dispatches FETCH_ERROR при сбое запроса', async () => {
global.fetch = jest.fn(() => Promise.reject('Network error'));
await store.dispatch(fetchData());
const actions = store.getActions();
expect(actions).toEqual([
{ type: 'FETCH_START' },
{ type: 'FETCH_ERROR', error: true }
]);
});
Что проверяет тестировщик:
— Последовательность действий
— Корректность переданных данных
— Обработку ошибок и fallback-поведение
— Отсутствие лишних или пропущенных экшенов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩5👍3🥰2🔥1
❗ Первый вебинар нашего курса по AI-агентам уже прошёл!
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
Запись уже выложили на обучающей платформе — можно влетать и догонять с комфортом.
Первые слушатели уже оставили фидбэки — и, кажется, мы попали в точку:
— «теперь наконец понял, как выбирать модели под задачу — раньше брал первую попавшуюся»
— «без лишнего, по делу, в лайве — кайф»
— «огонь, ожидания 100% оправданы лично у меня»
Если хотели вписаться, но сомневались — ещё не поздно. Вебинары идут вживую, записи сохраняются, чат работает, материалы открыты.
⏳ Ещё можно догнать и пройти всё вместе с потоком.
👉 Залетай на курс
🥰4
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5🤩2
При тестировании приложений часто забывают про экраны с необычными разрешениями, например, 800x600 или 5K. Эти размеры требуют отдельного подхода, чтобы убедиться, что интерфейс остаётся функциональным и красивым на всех типах устройств.
Промпт:
How can I check the responsiveness of my application for screen resolutions that are rarely used (e.g., 800x600 or 5K)? What testing tools and
methods should be applied for these screen sizes?
Чем полезен:
Дополнительно можно запросить:
— Как настроить медиа-запросы для таких разрешений
— Использование инструментов, таких как Chrome DevTools, для проверки адаптивности
— Рекомендации по улучшению интерфейса для редких экранов
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🤩2👍1
Наш подписчик поделился интересной историей:
«Во время тестирования регистрации на сайте я наткнулся на баг, из-за которого пользователи из разных часовых поясов не могли подтвердить свои аккаунты. Всё выглядело нормально, но время для ввода кода подтверждения не совпадало с реальным временем пользователя.
После разбирательства оказалось, что система не учитывала часовой пояс при расчёте времени действия кода. Пришли к такому решению: конвертировать время в UTC и отображать с учётом часового пояса.»
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤩3😁2
Media is too big
VIEW IN TELEGRAM
Как относитесь к созданию своего жпт не через конструктор, а хардкорно через код?
🔥 — я своего завайбкодил
🏃♀️ Ссылка на курс
🔥 — я своего завайбкодил
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4🌚2👏1
Cypress позволяет сохранять и восстанавливать сессию (cookies, localStorage, sessionStorage) при помощи команды
cy.session()
, чтобы логин не выполнялся перед каждым it. Это ускоряет тесты и делает их стабильнее.Что еще полезного:
Как настроить:
beforeEach(() => {
cy.session(['[email protected]', '123456'], () => {
cy.visit('/login')
cy.get('input[name="email"]').type('[email protected]')
cy.get('input[name="password"]').type('123456')
cy.get('button[type="submit"]').click()
cy.url().should('contain', '/dashboard')
}, {
cacheAcrossSpecs: false
})
cy.visit('/dashboard')
})
cy.session()
— кэширует сессию по идентификатору (массив или строка)cy.session()
обязательно добавляйте cy.visit()
, чтобы перейти на нужную страницу — Используйте
cacheAcrossSpecs: true
, чтобы сессия сохранялась между spec-файлами при запуске cypress run --browser electron
(но могут быть нюансы с Chrome)— Для валидации сессии можно добавить
validate()
опцию: при неуспехе — сессия пересоздаётся— Cypress.session API позволяет отслеживать и очищать, если необходимо
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5🥰3😁1
Вы знаете, как устроен баг-репорт, умеете писать автотесты и работать с API — но ваше резюме на HH никто не смотрит? Значит, пора перестать ждать и начать играть по правилам алгоритма.
Что в карточках:
Если хотите больше откликов — научитесь быть видимым для системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM