Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions temporalio/bridge/src/testing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ pub struct DevServerConfig {
port: Option<u16>,
database_filename: Option<String>,
ui: bool,
ui_port: Option<u16>,
log_format: String,
log_level: String,
extra_args: Vec<String>,
Expand Down Expand Up @@ -133,6 +134,7 @@ impl From<DevServerConfig> for ephemeral_server::TemporalDevServerConfig {
.maybe_port(conf.port)
.maybe_db_filename(conf.database_filename)
.ui(conf.ui)
.maybe_ui_port(conf.ui_port)
.log((conf.log_format, conf.log_level))
.extra_args(conf.extra_args)
.build()
Expand Down
1 change: 1 addition & 0 deletions temporalio/bridge/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class DevServerConfig:
port: int | None
database_filename: str | None
ui: bool
ui_port: int | None
log_format: str
log_level: str
extra_args: Sequence[str]
Expand Down
5 changes: 5 additions & 0 deletions temporalio/testing/_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ async def start_local(
dev_server_download_version: str = "default",
dev_server_extra_args: Sequence[str] = [],
dev_server_download_ttl: timedelta | None = None,
ui_port: int | None = None,
) -> WorkflowEnvironment:
"""Start a full Temporal server locally, downloading if necessary.

Expand Down Expand Up @@ -149,6 +150,7 @@ async def start_local(
dev_server_extra_args: Extra arguments for the CLI binary.
dev_server_download_ttl: TTL for the downloaded CLI binary. If unset, it will be
cached indefinitely.
ui_port: UI port to use if UI is enabled.

Returns:
The started CLI dev server workflow environment.
Expand All @@ -173,6 +175,7 @@ async def start_local(
new_args.append(f"{attr.name}={attr._metadata_type}")
new_args += dev_server_extra_args
dev_server_extra_args = new_args

# Start CLI dev server
runtime = runtime or temporalio.runtime.Runtime.default()
download_ttl_ms = None
Expand All @@ -191,12 +194,14 @@ async def start_local(
port=port,
database_filename=dev_server_database_filename,
ui=ui,
ui_port=ui_port,
log_format=dev_server_log_format,
log_level=dev_server_log_level,
extra_args=dev_server_extra_args,
download_ttl_ms=download_ttl_ms,
),
)

# If we can't connect to the server, we should shut it down
try:
return _EphemeralServerWorkflowEnvironment(
Expand Down
10 changes: 10 additions & 0 deletions tests/testing/test_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,16 @@ async def test_search_attributes_on_dev_server(
assert attrs == desc.typed_search_attributes


async def test_ui_port():
"""Test that ui_port parameter works correctly."""
async with await WorkflowEnvironment.start_local(
ui=True,
ui_port=18080,
) as env:
# Just verify it starts without error
assert env.client is not None


def assert_timestamp_from_now(
ts: datetime | float, expected_from_now: float, max_delta: float = 30
) -> None:
Expand Down
Loading