#include <bits/stdc++.h>
using namespace std;
int gsoc = 0;
int n, m;
bool check(char A[50][50], pair<long long, long long> pos) {
  long long x = pos.first, y = pos.second;
  long long ans = 0;
  if (x > 0) {
    if (A[x - 1][y] == 'B') {
      ans++;
      return false;
    }
  }
  if (x < n - 1) {
    if (A[x + 1][y] == 'B') {
      ans++;
      return false;
    }
  }
  if (y < m - 1) {
    if (A[x][y + 1] == 'B') {
      ans++;
      return false;
    }
  }
  if (y > 0) {
    if (A[x][y - 1] == 'B') {
      ans++;
      return false;
    }
  }
  if (ans > 0)
    return false;
  else
    return true;
}
void dfs(char A[50][50], pair<long long, long long> pos, bool visited[50][50]) {
  if (A[pos.first][pos.second] == '#' || A[pos.first][pos.second] == 'B')
    return;
  if (check(A, pos) == false) return;
  if (A[pos.first][pos.second] == 'G') {
    gsoc++;
  }
  visited[pos.first][pos.second] = true;
  long long x = pos.first, y = pos.second;
  if (x > 0 && !visited[x - 1][y]) {
    dfs(A, {x - 1, y}, visited);
  }
  if (x < n - 1 && !visited[x + 1][y]) {
    dfs(A, {x + 1, y}, visited);
  }
  if (y < m - 1 && !visited[x][y + 1]) {
    dfs(A, {x, y + 1}, visited);
  }
  if (y > 0 && !visited[x][y - 1]) {
    dfs(A, {x, y - 1}, visited);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t;
  cin >> t;
  int Case = 0;
  while (t--) {
    cin >> n >> m;
    char A[50][50];
    long long cG = 0;
    vector<pair<long long, long long> > pos;
    for (int i = 0; i < n; i++) {
      string str;
      cin >> str;
      for (int j = 0; j < m; j++) {
        A[i][j] = str[j];
        if (A[i][j] == 'G') {
          cG++;
          pos.push_back({i, j});
        }
      }
    }
    if (n == 1 && m == 1)
      printf("Yes\n");
    else if (cG == 0)
      printf("Yes\n");
    else if ((m > 1 && A[n - 1][m - 2] == 'B') ||
             (n > 1 && A[n - 2][m - 1] == 'B'))
      printf("No\n");
    else {
      int flag = 1;
      gsoc = 0;
      bool visited[50][50];
      memset(visited, false, sizeof(visited));
      dfs(A, {n - 1, m - 1}, visited);
      for (int _ = 0; _ < pos.size(); _++) {
        if (check(A, pos[_]) == false) {
          flag = 0;
          break;
        }
      }
      if (flag == 0) {
        printf("No\n");
      } else if (gsoc == cG) {
        printf("Yes\n");
      } else {
        printf("No\n");
      }
    }
  }
  return 0;
}
