Files
crewAI/lib/cli/tests/test_create_flow.py
T
Vidit Ostwal 0e6440b397 docs(cli): guide assistants to platform tools (#7581)
* feat(cli): prioritize platform integrations

* docs(cli): guide assistants to platform tools

* test(platform): update missing token assertion

* fix(platform): retain integration token environment key

* chore: ignore Codex workspace files

* feat(platform): expand integration catalog

* feat(platform): show integration action counts

* feat(platform): select agent actions separately

* feat(platform): group integration applications

* fix(cli): keep platform picker navigation in place

* fix(cli): validate platform apps once

* fix(platform): use one integration token variable

* test(platform): update integration token assertion

* fix(cli): clarify platform token validation

* fix(cli): show platform token prompts

* refactor(platform): expose application catalog

* refactor(platform): export catalog from Python

* docs(platform): document catalog regeneration

* fix(platform): resolve catalog type export
2026-09-25 23:24:59 +05:30

69 lines
2.7 KiB
Python

from __future__ import annotations
from pathlib import Path
from click.testing import CliRunner
from pytest import MonkeyPatch
import tomli
from crewai_cli.cli import crewai
from crewai_cli.create_flow import create_flow
def test_create_flow_declarative_project_can_run(
tmp_path: Path, monkeypatch: MonkeyPatch
):
monkeypatch.chdir(tmp_path)
create_flow("Research Flow", declarative=True)
project_root = tmp_path / "research_flow"
assert project_root.is_dir()
pyproject = tomli.loads(
(project_root / "pyproject.toml").read_text(encoding="utf-8")
)
assert pyproject["project"]["name"] == "research_flow"
assert pyproject["project"]["requires-python"]
assert pyproject["project"]["dependencies"]
assert (project_root / pyproject["tool"]["crewai"]["definition"]).is_file()
agents_md = (project_root / "AGENTS.md").read_text(encoding="utf-8")
assert "CrewAI Flow declaration" in agents_md
assert "schema: crewai.flow/v1" in agents_md
assert "do not assemble the string with CEL `+`" in agents_md
assert "Agent prompt template. Insert Flow values with `${...}`" in agents_md
assert "Runtime inputs passed to the Crew" in agents_md
assert "call: expression" in agents_md
assert "call: tool" not in agents_md
assert "call: script" not in agents_md
assert "call: each" not in agents_md
assert "human_feedback" not in agents_md
claude_md = (project_root / "CLAUDE.md").read_text(encoding="utf-8")
assert "@AGENTS.md" in claude_md.splitlines()
cursor_md = (project_root / "CURSOR.md").read_text(encoding="utf-8")
assert "@AGENTS.md" in cursor_md.splitlines()
gemini_md = (project_root / "GEMINI.md").read_text(encoding="utf-8")
assert "@./AGENTS.md" in gemini_md.splitlines()
monkeypatch.chdir(project_root)
result = CliRunner().invoke(crewai, ["run"], env={"UV_RUN_RECURSION_DEPTH": "1"})
assert result.exit_code == 0
assert "Running the Flow" not in result.output
assert "AI agents" in result.output
def test_create_flow_scaffolds_assistant_instructions(
tmp_path: Path, monkeypatch: MonkeyPatch
):
monkeypatch.chdir(tmp_path)
create_flow("Research Flow")
project_root = tmp_path / "research_flow"
agents_md = (project_root / "AGENTS.md").read_text(encoding="utf-8")
assert "CrewAI Reference for AI Coding Assistants" in agents_md
assert "Never disable, block, or silence CrewAI's built-in observability" in agents_md
claude_md = (project_root / "CLAUDE.md").read_text(encoding="utf-8")
assert "@AGENTS.md" in claude_md.splitlines()
gemini_md = (project_root / "GEMINI.md").read_text(encoding="utf-8")
assert "@./AGENTS.md" in gemini_md.splitlines()