#include <bits/stdc++.h>
#pragma warning(disable : 4996)
#pragma comment(linker, "/STACK:16777216")
using namespace std;
const int INF = 2000000000;
const long long LINF = 2000000000000000000;
template <typename T>
void print(vector<T>& a) {
  for (int i = 0; i < a.size(); i++) cout << a[i] << ' ';
  cout << '\n';
}
template <typename T>
void print(deque<T>& a) {
  for (int i = 0; i < a.size(); i++) cout << a[i] << ' ';
  cout << '\n';
}
template <typename T>
void print(vector<vector<T>>& a) {
  for (int i = 0; i < a.size(); i++) {
    for (int j = 0; j < a[i].size(); j++) cout << a[i][j] << ' ';
    cout << '\n';
  }
}
template <typename T>
void input(vector<T>& a) {
  for (int i = 0; i < a.size(); i++) cin >> a[i];
}
template <typename T>
void input(deque<T>& a) {
  for (int i = 0; i < a.size(); i++) cin >> a[i];
}
template <typename T>
void input(vector<vector<T>>& a) {
  for (int i = 0; i < a.size(); i++)
    for (int j = 0; j < a[i].size(); j++) cin >> a[i][j];
}
vector<vector<bool>> used;
int n, m;
void dfs(int i, int j, vector<vector<char>>& a) {
  used[i][j] = true;
  if (i + 1 < n && !used[i + 1][j]) dfs(i + 1, j, a);
  if (i > 0 && !used[i - 1][j]) dfs(i - 1, j, a);
  if (j + 1 < m && !used[i][j + 1]) dfs(i, j + 1, a);
  if (j > 0 && !used[i][j - 1]) dfs(i, j - 1, a);
}
bool can_go(vector<vector<char>>& a) {
  used = vector<vector<bool>>(n, vector<bool>(m, false));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i][j] == '#') used[i][j] = true;
  dfs(n - 1, m - 1, a);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      if (used[i][j] && a[i][j] == 'B') return false;
      if (!used[i][j] && a[i][j] == 'G') return false;
    }
  return true;
}
void solve() {
  cin >> n >> m;
  vector<vector<char>> a(n, vector<char>(m));
  input(a);
  int cnt_bad = 0;
  int cnt_good = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i][j] == 'B')
        cnt_bad++;
      else if (a[i][j] == 'G')
        cnt_good++;
  if (cnt_good == 0) {
    cout << "Yes" << '\n';
    return;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (a[i][j] == 'B') {
        if (i > 0)
          if (a[i - 1][j] == '.') a[i - 1][j] = '#';
        if (i + 1 < n)
          if (a[i + 1][j] == '.') a[i + 1][j] = '#';
        if (j > 0)
          if (a[i][j - 1] == '.') a[i][j - 1] = '#';
        if (j + 1 < m)
          if (a[i][j + 1] == '.') a[i][j + 1] = '#';
      }
  if (can_go(a))
    cout << "Yes" << '\n';
  else
    cout << "No" << '\n';
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tst = 1;
  cin >> tst;
  while (tst--) solve();
}
