AEmelin

Talks

Building AI Agents: Automating Espresso Test Generation

Kolesa Conf 2025

Open on YouTube

In this talk

  1. 00:05What an agent is and why build your own
  2. 03:29Demo: from a scenario to a UI test
  3. 05:33Which tasks are worth automating
  4. 08:00Breaking down a developer’s work into steps
  5. 10:19LangChain, LangGraph and subgraphs
  6. 15:31Structured responses, tools and memory
  7. 21:29Cost, model selection and agent oversight
  8. 25:50Prompts and context management
  9. 29:15Results, limitations and next steps

How to turn UI test writing into a sequence of tasks for an AI agent: follow a scenario, identify interface elements, generate a Page Object and check the code. A walkthrough of LangChain and LangGraph, tools, memory and context management, with practical advice on cost and checking the results. The demonstration uses UIAutomator; the approach is also discussed in relation to Espresso.

Jetpack Compose

Yandex School of Mobile Development · Android 2025Published

Open on YouTube

In this talk

  1. 03:21Introduction and lecture outline
  2. 05:03Imperative and declarative UI
  3. 16:11Compose principles and data flow
  4. 28:00Questions about the declarative approach
  5. 33:55Composable functions and state
  6. 43:51How recomposition works
  7. 50:00Modifiers and layout
  8. 01:01:10The UI tree and rendering phases
  9. 01:07:28Animations
  10. 01:13:35Side effects and coroutines
  11. 01:21:30Lazy lists and item keys
  12. 01:25:00Performance and state hoisting
  13. 01:36:40Themes and CompositionLocal
  14. 01:41:45Navigation and XML interoperability
  15. 01:46:46Benefits, limitations and prospects
  16. 01:57:09Questions and answers

From imperative UI to an interface as a function of state. This lecture introduces composable functions, recomposition, state and unidirectional data flow, then moves on to building screens: modifiers, layouts, animations, effects and lists. It also covers performance, themes, navigation and View/XML interoperability, followed by questions and answers.

Dependency Injection in Android

Yandex School of Mobile Development · Android 2024Published

Open on YouTube

In this talk

  1. 06:40Lecture introduction and an approach to learning DI
  2. 13:28Dependencies, graphs and coupling
  3. 25:18Ways to inject dependencies
  4. 33:07Dependency inversion and inversion of control
  5. 40:28Factories and Service Locator
  6. 47:10Questions on the theory
  7. 53:51Annotations and code generation
  8. 01:02:31Dagger and injection methods
  9. 01:10:18Modules: Provides and Binds
  10. 01:16:05Components and graph construction
  11. 01:20:04Scopes and object lifetimes
  12. 01:25:14Lazy, Provider and other features of Dagger
  13. 01:34:58Hilt: convenience and limitations
  14. 01:43:53Yatagan and build speed in large projects
  15. 01:54:08Questions on the practical section

What a dependency is and how the way it is passed affects coupling, testing and architecture. Through dependency graphs, dependency inversion, factories and Service Locator, the lecture builds up to how DI frameworks work. The practical section focuses on Dagger: injection, modules, components, scopes and additional features. It concludes with a look at Hilt’s limitations and an introduction to Yatagan for large projects.

The Philosophy of Architecture

Kolesa Conf 2023

Open on YouTube

In this talk

  1. 00:05Why architecture needs reasoning
  2. 02:44Philosophy as a tool for understanding
  3. 05:45Kant’s categories and materialism
  4. 09:15Hegel and a historical approach
  5. 13:28Architectural patterns as a process
  6. 18:00Contradictions as a source of development
  7. 22:31Principles of analysis and the next step after MVI
  8. 24:28Screen state and permitted actions
  9. 28:45Conclusions and reading

How to reason about architecture without reducing it to pattern names. Ideas from Kant and Hegel, historical development and contradictions provide a way to examine the evolution of MVC, MVVM and MVI. The talk concludes with an example of how this way of thinking can reveal a mismatch between interface state and actions, and suggest the next step in an architecture’s development.

Appium vs Espresso: Which to Choose and How to Use Them

Avito Mobile Testing Meetup

Open on YouTube

In this talk

  1. 00:07Context: mobile browser regression testing
  2. 01:41Appium and the test infrastructure
  3. 09:14Emulators, Docker and Selenoid
  4. 13:27The team and the move to Espresso
  5. 16:03Espresso’s capabilities and limitations
  6. 20:25Mocks, diagnostics and resources
  7. 24:06Test reliability and CI
  8. 26:27Why both tools are used
  9. 27:24Questions and answers

Lessons from automated testing of the mobile Yandex Browser: how the Appium test infrastructure works, why emulators, Docker and Selenoid were needed, and why the team began developing Espresso tests. A comparison of capabilities, speed, infrastructure costs and developer experience, with particular attention to test reliability, CI integration and combining the two tools.

Infrastructure for Running Appium Tests on Android: e-Legion Meetup

e-Legion Android Meetup at Yandex

Open on YouTube

How to run Appium tests on physical Android devices and emulators: the evolution of the test setup, environment isolation and infrastructure automation. The Yandex Disk recording contains Alexey Emelin’s talk and the Q&A. YouTube hosts the full meetup stream; the link opens at the start of this talk.

Infrastructure for Running Appium Tests on Android

MobileOptimized 2017Published

Open on YouTube

In this talk

  1. 00:05Why regression testing needed automation
  2. 01:25Appium and the WebDriver protocol
  3. 05:04Selenium Hub: parallel execution and device selection
  4. 10:18Environment isolation with Docker
  5. 14:30Connecting devices through udev
  6. 17:00Scaling with Grid Router
  7. 20:13Moving from devices to emulators
  8. 25:49Selenoid: a new container for each test
  9. 27:48File system load and optimization
  10. 29:43The final architecture and deployment
  11. 31:53Questions and answers

The evolution of functional testing infrastructure at Yandex: from a single Appium server to distributed execution on physical devices and emulators. How to select devices through Selenium Hub, isolate environments in Docker, automate phone connections and start a container for each test with Selenoid. A look at practical failures, scaling and infrastructure optimization.

Testing Objects Outside the DOM

SQA Days 12

Open on YouTube

Testing graphical objects in the Yandex Maps API that are visible to users but absent from the DOM tree. Automating checks of rendering and interaction in a complex web interface, practical limitations of the tools and lessons from the Yandex team.

Testing Non-DOM Objects in Modern Web Interfaces: The Yandex Maps API

YaC 2012

How to test a web interface built with JavaScript and canvas when its graphical objects cannot be accessed through the DOM. Using the Yandex Maps API as an example, the talk explores automated visual checks and the challenges of interacting with these objects. A separate recording of the talk at YaC 2012.